Java API to match multiple fields in elasticsearch

elasticsearch

Solution

You can use MuliMatchQuery or Boolean Query to fulfill your requirement.

ex:-

BoolQueryBuilder boolQuery = new BoolQueryBuilder();
for (Map.Entry<String, String> entry : fields.entrySet()){
    boolQuery.must(QueryBuilders.matchQuery(entry.getKey(), entry.getValue()));
}

Set this `boolQuery` in your `searchRequest` read the elasticsearch boolQueries and use one which fits for your requirement.

The Above example will perform the `AND` operation among the provided fields. the `field1` and `field2` must match. if you want to perform the `OR` operation then you should use `sould` query you have an option to set `minimum_should_match` in that you can specify the minimum fields should match.

Problem

Currently I query ES for a single key value pair like this: ``` String query_key = "abc"; String query_val = "def"; searchRequestBuilder.setQuery(QueryBuilders.matchQuery(query_key, query_val)).execute().actionGet(); ``` Now, instead of single key-value pair, I have the following key-value pair map: `Map<String,String> query_list` How do I modify the same for this?

Original source