我的索引中有这些数据
https://gist.github.com/bitgandtter/6794d9b48ae914a3ac7c
如果您在映射中注意到 im 使用从 3 个令牌到 20 个的 ngram。
当我执行此查询时:
GET /my_index/user/_search?search_type=dfs_query_then_fetch
{
"query": {
"filtered": {
"query":{
"multi_match":{
"query": "F",
"fields": ["username","firstname","middlename","lastname"],
"analyzer": "custom_search_analyzer"
}
}
}
}
}
我应该得到我已经索引的 8 个文档,但我只得到 6 个,其中两个名字是 Franz 和 Francis。我希望这两个也有,因为 f 它包含在数据中。由于某种原因,它不起作用。
当我执行:
GET /my_index/user/_search?search_type=dfs_query_then_fetch
{
"query": {
"filtered": {
"query":{
"multi_match":{
"query": "Fran",
"fields": ["username","firstname","middlename","lastname"],
"analyzer": "custom_search_analyzer"
}
}
}
}
}
我得到那两个文件。
如果我将 ngram 降低到从 1 开始,我会得到所有文档,但我认为这会影响查询的性能。
我在这里缺少什么。提前致谢。
注意:所有示例都是使用意义编码的