Elasticsearch 7.2使用映射和自定义分析器php创建索引
我正在尝试覆盖弹性搜索分析器,以便为我正在处理的自动完成返回精确匹配的电子邮件。我目前正在使用PHP库进行弹性搜索,但大部分问题都在JSON中,因为直接使用JSON比使用嵌套PHP数组更容易 我已经找到了一些以前版本的老例子,但在版本7.2中,我没有幸运地使用映射和自定义分析器创建索引Elasticsearch 7.2使用映射和自定义分析器php创建索引,php,
elasticsearch,Php,
elasticsearch,我正在尝试覆盖弹性搜索分析器,以便为我正在处理的自动完成返回精确匹配的电子邮件。我目前正在使用PHP库进行弹性搜索,但大部分问题都在JSON中,因为直接使用JSON比使用嵌套PHP数组更容易 我已经找到了一些以前版本的老例子,但在版本7.2中,我没有幸运地使用映射和自定义分析器创建索引 $queryStr= <<<'EOD' { "index":"my_db", "body":{ "settings":{
$queryStr= <<<'EOD'
{
"index":"my_db",
"body":{
"settings":{
"analysis":{
"analyzer":{
"my_email_analyzer":{
"type":"custom",
"tokenizer":"uax_url_email",
"filter":[
"lowercase",
"stop"
]
}
}
}
},
"mapping":{
"properties":{
"ak_first_name":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"ak_last_name":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"uID":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"email":{
"type":"text",
"fields":{
"keyword":{
"type":"string",
"analyzer":"my_email_analyzer"
}
}
}
}
}
}
}
EOD;
$this->client->indices()->create($queryStr);
$queryStr=create($queryStr);
您的JSON中有两个小错误:
应为映射
映射
应为字符串
文本
$queryStr= <<<'EOD'
{
"index":"my_db",
"body":{
"settings":{
"analysis":{
"analyzer":{
"my_email_analyzer":{
"type":"custom",
"tokenizer":"uax_url_email",
"filter":[
"lowercase",
"stop"
]
}
}
}
},
"mappings":{ <--- here
"properties":{
...
"email":{
"type":"text",
"fields":{
"keyword":{
"type":"text", <---- here
"analyzer":"my_email_analyzer"
}
}
}
$queryStr=如果直接点击ES REST api,您是否能够创建索引?工作非常完美!非常感谢你!!太棒了,很高兴它有帮助!