Elasticsearch查询未返回多个应过滤器的预期结果

时间:2019-09-30 17:09:16

标签: elasticsearch

我正在使用Java的高级REST API执行Elasticsearch查询,并希望看到处于活动状态或没有参考ID的记录。我正在按名称查询记录,如果我直接用/ _search?q =击中索引,我会看到想要的结果。

我的逻辑是否正确(伪代码):

postFilters.MUST {
  Should {
    MustNotExist {referenceId}
    Must {status = Active}
  }
  Should {
    MustNotExist {referenceId}
    Must {type = Person}        
  }
}

我得到的是带有参考ID的活动记录。但是,我想包括也没有referenceId的记录,因此为什么我必须使用MustNotExist {referenceId}。

为简单起见,可以删除第二个Should子句(用于测试),因为第一个子句本身无法正常工作。

1 个答案:

答案 0 :(得分:0)

在我的情况下,我必须使用匹配查询而不是术语查询,因为要查询的值不是原始值或字符串。例如,必须(Must),类型= Person(Person),Person(Person)的部分是一个枚举,因此寻找“ Person”是不正确的,而match使其可以“ match”。