Elasticsearch 获取字段不为空/字段为空或字段存在/字段不存在的数据

Elasticsearch get data where field not null / field is null or field exist / field not exist

我正在使用 elasticsearch spring 数据,我想添加过滤器,以便我可以按 exist/field 不存在的字段或字段值为 null/not 空的字段进行搜索。我应该怎么做?

我知道我应该使用这样的东西:

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "exists": {
                "field": "price"
              }
            },
            ...     <-- your other constraints, if any
          ]
        }
      }
    }
  }
}

Bu 如何在 elasticsearch spring 数据中实现它?

Optional.ofNullable(searchParams.getUid()).ifPresent(v -> filters.add(boolFilter().must(???????));

您可能喜欢使用 org.elasticsearch.index.query.FilterBuilders 构建您的 exists 过滤器

FilterBuilders.boolFilter().must(FilterBuilders.existsFilter("price"))