Elasticsearch匹配查询解析异常:未知START_ARRAY令牌问题求助
Elasticsearch查询解析异常修复
当前使用以下查询语句时无法获取结果,同时触发解析异常:[match] 在[query]后未知令牌[START_ARRAY]
错误查询语句:
{ "query": { "bool": { "must": [ { "match": { "cid": { "query": [ "TEST" ] } } } ] } } }
问题原因
match查询的query参数仅支持单个字符串或数值类型的值,不能传入数组,这是触发解析错误的直接原因。
修复方案
根据需求选择以下两种方案之一:
方案1:匹配单个值(保留match查询)
如果只需要匹配cid为TEST的文档,直接将query的数组改为单个字符串即可:
{ "query": { "bool": { "must": [ { "match": { "cid": { "query": "TEST" } } } ] } } }
方案2:匹配多个值(改用terms查询)
如果需要匹配cid包含多个值的文档,将match替换为terms查询,terms支持传入数组作为查询条件:
{ "query": { "bool": { "must": [ { "terms": { "cid": [ "TEST", "OTHER_VALUE" ] } } ] } } }
内容的提问来源于stack exchange,提问作者Ajay Takur
相关产品推荐
相关产品推荐

