I've an elasticsearch index having users with fields like.. "name" : "kai" "age" : "23" "location" : "Delhi, India" "tag": [ "search", "nosql" ] etc.
I want to query multiple strings in all fields of user (Eg. ["nosql","delhi"]). Is it possible using Java API?
Here is a sample of code I am using. (But it is irrelevant to the question) Its just to know the objects I am using right now.
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
.must(QueryBuilders.matchAllQuery());
if(location!=null) {
queryBuilder.must(QueryBuilders.matchQuery("location",location));
}
BoolFilterBuilder filerBuilder=FilterBuilders.boolFilter();
for(String skill:skills){
filerBuilder.must(FilterBuilders.rangeFilter("tags."+skill).from(0));
}
filerBuilder.must(FilterBuilders.queryFilter(queryBuilder));
if(age!=null) {
filerBuilder.must(FilterBuilders.rangeFilter("age").from(age[0]).to(age[1]));
}
SearchResponse response = client.prepareSearch("skillbin")
.setTypes("stackdump")
.setSearchType(SearchType.QUERY_AND_FETCH)
.setQuery(queryBuilder)
.setPostFilter(filerBuilder)
.addSort("reputation", SortOrder.DESC)
.execute()
.actionGet();
SearchHits hits=response.getHits();
Thanks in advance. :)