我创建了一个示例索引,其中包含以下映射:
{
"_doc": {
"_source": {
"enabled": False
},
"properties": {
"status": { "type": "keyword" }
}
}
}
索引一份文件:
{"status": "CMP"}
使用条件查询搜索具有此状态的文档时,我找不到任何结果:
{
"query" : {
"terms": { "status": ["CMP"]}
}
}
但是,如果我通过将输入设置为小写来进行相同的查询,我将找到我的文档:
{
"query" : {
"terms": { "status": ["cmp"]}
}
}
为什么?由于我正在搜索关键字字段,因此不应分析索引内容,并且该内容应与大写值匹配...
答案 0 :(得分:1)
不再是@Oliver Charlesworth Now - 在Elastic 6.x中 - 您可以继续使用keyword datatype
,使用normalizer
doc here小写文字。但是,在每种情况下,您都应该更改索引映射并重新索引文档
答案 1 :(得分:0)
除非出现其他问题,否则不应出现您所看到的症状。
未分析keyword
索引,因此您的索引应仅包含CMP
。还未分析terms
查询等,因此仅搜索CMP
的索引。因此应该有匹配。
答案 2 :(得分:0)
索引和映射创建以及搜索是测试套件的一部分。似乎测试套件的设置部分未执行,并且映射未应用于索引。
然后索引使用默认类型而不是映射类型,导致使用字符串字段而不是关键字。
更改自动化测试的设置方法后,映射很好地应用于索引,状态“CMP”的大写值现在与文档匹配。