简体   繁体   中英

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

I need to retrieve documments filtered by "brand" attribute, and retrieve those that have an specic value for another attribute. Example:

All "apple" documents ("brand" attribute) that are active ("active" attribute true), with id "abc", "def" or "ghi" values.

I am using Java High Level REST Client.

That is my code:

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);

Thank you!!

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);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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