我正在执行以下查询来搜索一些itens:
{
"filtered" : {
"query" : {
"match" : {
"name_db" : {
"query" : "Human",
"type" : "boolean"
}
}
},
"filter" : {
"terms" : {
"cat" : [ "B8E" ],
"execution" : "bool"
}
}
}
}
看到“猫”字段?当它类似于“B8E”时,没有结果(即使它应该),而当它像“320”时,结果是正确的。可能有什么不对?为什么混合字母和数字会有问题?
提前致谢。
PS:我是elasticsearch的新手
答案 0 :(得分:1)
我非常确定您的字段cat
是一个analyzed
字符串,因此会以小写形式编制索引(这对数字没有影响)。如果您尝试此查询,则会获得结果。
{
"filtered" : {
"query" : {
"match" : {
"name_db" : {
"query" : "Human",
"type" : "boolean"
}
}
},
"filter" : {
"terms" : {
"cat" : [ "b8e" ], <--- search in lowercase
"execution" : "bool"
}
}
}
}
<强>更新强>
如果要以大写形式索引cat
字段,以便可以使用大写(例如"B8E"
)进行搜索,则需要将其映射更改为not_analyzed
,如下所示:
"cat": {
"type": "string",
"index": "not_analyzed"
}