我在弹性搜索查询中面临一个奇怪的问题。我对弹性搜索知之甚少。我的疑问是:
{
"query":
{
"bool":
{
"must":
[
{
"text":
{
"countryCode2":"DE"
}
}
],
"must_not":[],
"should":[]
}
},"from":0,"size":1,"sort":[],"facets":{}
}
问题在于“DE”。它给了我结果但是对于“BE”或“IN”它返回空结果。
答案 0 :(得分:4)
您正在使用默认映射进行索引,默认映射会删除英语停用词。国家/地区代码“IN”,“BE”以及更多内容甚至没有被编入索引的停用词,因此无法获得匹配的文档,也不可能在该字段上进行分区时取回这些国家/地区代码。
解决方案是在为国家/地区代码字段提交自己的映射后重新编制索引:
{
"your_type_name" : {
"country" : {
"type" : "string", "index" : "not_analyzed"
}
}
}
如果您已尝试执行此操作但未更改,则映射无法正确提交。我建议仔细检查它的json结构是否正确,并且你可以使用get mapping api实际获得它。
由于这是一个常见问题,因此默认情况可能会在未来发生变化,以减少干扰并避免应用任何与语言相关的文本分析。