我有来自Elastic的json:
"_source":{
"secteurs":[
"TEST-A",
"B",
]
}
这个请求:
{"query":{"match":{"secteurs":{"query":"A"}}}}
我不明白为什么会返回一个带有“ TEST-A”的对象。我只需要“ A”专家,而不是“ TEST-A”
我尝试使用“ query_string”,结果相同。
映射:
"secteurs":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
答案 0 :(得分:1)
是的,正如我所怀疑的那样。这是standard analyser
的行为。
索引TEST-A
时,它将存储为
{
"tokens": [
{
"token": "test",
"start_offset": 0,
"end_offset": 4,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "a",
"start_offset": 5,
"end_offset": 6,
"type": "<ALPHANUM>",
"position": 1
}
]
}
因此它与a
相匹配。
为解决您的问题,您可以使用以下
{"query":{"match":{"secteurs.keyword":{"query":"A"}}}}
注意:keyword
是未经分析的数据版本。因此也区分大小写。