Queries in Elasticsearch through Java

Viewed 40

I am having a deadlock situation in Elasticsearch. Can we skip one particular field while doing the search without disabling it from the mapping?

1 Answers

Yeah, why not, you can give field names in which you want to search. refer multi-match for example

{
  "query": {
    "multi_match" : {
      "query":    "this is a test", 
      "fields": [ "subject", "message" ] --> note the fields in which ES search, while mapping may have n number of fields.
    }
  }
}

Java code for multi-match query:

SearchRequest searchRequest = new SearchRequest(USERS_INDEX_NAME);
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

// Note field names , like firstName, lastName etc

        MultiMatchQueryBuilder multiMatchQueryBuilder = new MultiMatchQueryBuilder(searchTerm, "firstName", "lastName",
                "password", "emailId", "userId", "mobileNumber");
        multiMatchQueryBuilder.operator(Operator.AND);
        searchSourceBuilder.query(multiMatchQueryBuilder);
        searchRequest.source(searchSourceBuilder);
        SearchResponse searchResponse = esclient.search(searchRequest, RequestOptions.DEFAULT);
        return getUserSearchResults(searchResponse);
Related