Elasticsearch获取数据,其中字段不为空/字段为空或字段存在/字段不存在

rad*_*d11 0 java elasticsearch spring-data spring-boot spring-data-elasticsearch

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

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

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "exists": {
                "field": "price"
              }
            },
            ...     <-- your other constraints, if any
          ]
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如何在Elasticsearch Spring数据中实现它?

Optional.ofNullable(searchParams.getUid()).ifPresent(v -> filters.add(boolFilter().must(???????));
Run Code Online (Sandbox Code Playgroud)

Rah*_*hul 5

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

FilterBuilders.boolFilter().must(FilterBuilders.existsFilter("price"))
Run Code Online (Sandbox Code Playgroud)