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

时间:2016-03-11 12:15:59

标签: java elasticsearch spring-boot spring-data spring-data-elasticsearch

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

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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