Elasticsearch带时间范围的多must查询出现重复key语法错误如何解决
报错&结果不符合预期的根因
- JSON规范不允许同一个对象下出现重复的
must键,你在bool查询下定义了两个must数组,解析时会出现语法错误,或者后定义的must直接覆盖前一个,导致逻辑完全不符合预期。 - 多余的
minimum_should_match参数会干扰查询逻辑:这个参数仅当bool查询中存在should条件块时才需要配置,你当前全是「必须满足」的条件,不需要加这个参数,之前合并条件后结果不对基本都是这个参数导致的。
正确的查询DSL
你要求的三个条件(日志同时包含word1、word2、date_time在最近15分钟内)都是必须同时满足的逻辑与关系,全部放到同一个must数组中即可:
{ "query": { "bool": { "must": [ { "match": { "message": "word1" } }, { "match": { "message": "word2" } }, { "range": { "date_time": { "gte": "now-15m" } } } ] } } }
内容的提问来源于stack exchange,提问作者senjizu
相关产品推荐
相关产品推荐

