【发布时间】:2015-09-18 06:28:44
【问题描述】:
我有以下索引文档:
{
"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" }
}
}
}
我一直认为这与分析器有关,并一直在追查。我也一直想知道使用点表示法来访问嵌套的访问者属性是否是错误的。
谁能告诉我为什么我不能过滤 ID 为“ABC”的访问者,但可以过滤访问者 123 的访问者
【问题讨论】:
-
我对分析仪的预感得到了回报。我发现当将 visitor.id 设置为“abc”而不是“ABC”时,我能够得到预期的结果。我正在研究默认字符串分析器在遇到所有大写字母时会做什么。但是,在我的映射中将字段设置为 "index": "not_analyzed" 解决了这个问题。 “访问者”:{“属性”:{“id”:{“类型”:“字符串”“索引”:“not_analyzed”} } }
-
正是如此。这个问题的变体每周出现数十次。您可能会发现这篇文章感兴趣:found.no/foundation/beginner-troubleshooting :)
-
感谢您的帖子,亚历克斯。这很有帮助。它链接到的帖子:found.no/foundation/text-analysis-part-1 更有帮助。
-
初学者帖子旨在阐明一些未知数,将它们的深度留给其他文章。很高兴你喜欢他们! :)
标签: elasticsearch