繁体   English   中英

ElasticSearch Java 高级 REST 客户端:过滤文档和或查询

[英]ElasticSearch Java High Level REST Client: filter documents and or query

我需要检索按“品牌”属性过滤的文档,并检索那些对另一个属性具有特定值的文档。 例子:

所有处于活动状态的“apple”文档(“brand”属性)(“active”属性为 true),id 为“abc”、“def”或“ghi”值。

我正在使用 Java 高级 REST 客户端。

那是我的代码:

SearchRequest searchRequest = new SearchRequest(index);
  searchRequest.types(type);

  SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

  /* add query filters */
  MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("brand", brand);
  searchSourceBuilder.query(matchQueryBuilder);

  /* base sort is added */
  //TODO: load sort from mapping based on baseSort of customSort
  searchSourceBuilder.sort(sortBy , SortOrder.DESC);

  /* add product id */

  BoolQueryBuilder boolQuery = QueryBuilders.boolQuery()
          .filter(QueryBuilders.termQuery("active", true));

  searchSourceBuilder.query(boolQuery);
  searchRequest.source(searchSourceBuilder);

谢谢!!

SearchRequest searchRequest = new SearchRequest(INDEX);
        QueryBuilder qb = QueryBuilders.queryStringQuery(searchText + "*").defaultField("companyName")
                .defaultOperator(Operator.AND);

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.boolQuery()
            .must(QueryBuilders.termQuery("categories.id", category)
            .should(QueryBuilders.termQuery("product_id", productIdsList)
           );



sourceBuilder.sort(new ScoreSortBuilder().order(SortOrder.DESC));
searchRequest.source(sourceBuilder);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM