我想使用弹性搜索2.3使用其官方PHP客户端进行通配符搜索。
我面临的问题是:
案例1.当我搜索 wood 这个词时,它会返回有樵夫,好莱坞和好莱坞的单词。
案例2.但是当我搜索好莱坞时,它并没有返回带有好莱坞的字样。
但是,在查询字符串中完成后,一切正常:
"query" => [
"query_string" => [
"query" => "*$keyword*",
"analyze_wildcard" => true,
"fields" => $fields
]
],
但如果使用如下,则案例2无效:
"query" => [
"bool" => [
"must" => [
[
"wildcard" => [
'name' => "*$keyword*",
]
],
[
"nested" => [
"path" => "address",
"score_mode" => "max",
"query" => [
"bool" => [
"must" => [..match[] parameters..]
]
]
]
]
]
]
我不确定我做错了什么。请帮忙。
编辑:
注意:我已将该字段设为not_analysed。
我的查询在搜索卡时返回纸板,但在搜索纸板时未返回纸板
感谢。
答案 0 :(得分:0)
Elasticsearch仅在not_analyzed
字段
因此,如果您想使用通配符功能,可以在query_string
对象下使用它,或者将该字段的映射更改为index: not_analyzed
,然后您就可以使用通配符搜索范围。