我有以下的索引文件:ElasticSearch不返回结果对字符串属性方面查询
{
"visitor": {
"id": <SOME STRING VALUE>
}
}
的文件的映射:
"visitor": {
"properties": {
"id": {
"type": "string"
}
}
}
当我运行以下查询我得到的结果:
{
"query": {
"filtered": {
"query": {
"match_all": {}
}
},
"filter": {
"term": { "visitor.id": "123" }
}
}
}
尽管如此,这并不:
{
"query": {
"filtered": {
"query": {
"match_all": {}
}
},
"filter": {
"term": { "visitor.id": "ABC" }
}
}
}
我一直在想这与分析仪有关,并一直在追逐下来。我也一直在想,如果我错误地使用点符号来访问嵌套的访客属性。
谁能告诉我为什么我不能用“ABC”的ID,但可以在访客筛选游客123
我对分析仪的预感得到了回报。我发现将visitor.id设置为“abc”而不是“ABC”时,我能够获得预期的结果。我正在研究默认字符串分析器在遇到所有大写字母时会做什么。但是,在我的映射中将字段设置为“索引”:“not_analyzed”解决了问题。 “访客”:{ “属性”:{ “ID”:{ “类型”: “串” “索引”: “not_analyzed” } } } – goatshepard
正是这样。这个问题的变种每周出现几十次。你可能会发现这篇感兴趣的文章:https://www.found.no/foundation/beginner-troubleshooting/ :) –
感谢这篇文章,亚历克斯。这非常有帮助。它链接到的帖子:https://www.found.no/foundation/text-analysis-part-1/更有帮助。 – goatshepard