0

How can I have multiple query in Search API in elasticsearch v5.6 in rest high level client? I need to have OR and AND queries in the search query. I've been using searchSourceBuilder, it only has one matchQuery.

QueryBuilder matchQueryBuilder = QueryBuilders.matchQuery(field, query);

Thanks in advance!

1 Answers1

1

You can use something like:

BoolQueryBuilder finalQuery = QueryBuilders.boolQuery();

For OR clauses you can use:

finalQuery.should().add(your query);

For AND clauses you can use:

finalQuery.must().add(your query);

You can link them however you want, and you can nest them as the logic dictates.

Cris
  • 26
  • 3
  • Hey, could you show an example for nesting boolQueryBuilder? It'd be of much help! – manickavasagan cse22' Feb 25 '22 at 18:56
  • Sure. BoolQueryBuilder finalQuery = QueryBuilders.boolQuery(); BoolQueryBuilder intermediateQuery= QueryBuilders.boolQuery(); QueryStringQueryBuilder queryCats = queryStringQuery("cat"); QueryBuilder existsQuery = existsQuery("name"); intermediateQuery.must().add(queryCats); intermediateQuery.must().add(existsQuery); finalQuery.should().add(intermediateQuery); finalQuery.should().add(queryStringQuery("dog"); This code should find all the cats which have a name and all the dogs. Is this what you were looking for? – Cris Mar 02 '22 at 08:31
  • Thanks man, this is exactly what I'm looking for! – manickavasagan cse22' Mar 10 '22 at 13:48