过滤

时间:2018-01-29 22:16:11

标签: java json api elasticsearch elasticsearch-5

我的弹性搜索中有很多数据。 其中一个例子是,

{

    "_index": "some_index",

    "_type": "some_type",

    "_id": "AWDpmuZ9u4O0tj_RL7Zr",

    "_score": 1,

    "_source": {

      "avro_schema": "some_data",

      "md_type": "AA"

    }

我想删除此对象 - " avro_schema":" some_data",

仅当md_type是所有文件中的AA时。

我想编写一个JAVA API,它在elasticSearch中执行此操作。

截至目前,我已经做到了这一点......

BoolQueryBuilder query = new BoolQueryBuilder();
  query.should(QueryBuilders.boolQuery().must(QueryBuilders.existsQuery("md_type\":\"AA")));

  UpdateByQueryRequestBuilder ubqrb = UpdateByQueryAction.INSTANCE.newRequestBuilder(client);
  Script script = new Script("ctx._source.remove('avro_schema')");
  BulkByScrollResponse response = ubqrb.script(script)
      .filter(QueryBuilders.termQuery("md_type", "AA"))
      .get();