Yao Pan
Yao Pan

Reputation: 524

how to search documents by field property in Elasticsearch using java?

enter image description here

I want to search docs which type=0,how to build search query using java?

Upvotes: 1

Views: 705

Answers (1)

Tarang Bhalodia
Tarang Bhalodia

Reputation: 1195

You can build your query using QueryBuilder in java.

Here's a sample code for the same:

BoolQueryBuilder boolQuery = new BoolQueryBuilder();
TermQueryBuilder termQuery = new TermQueryBuilder("tasks.type", 0);
boolQuery.must(termQuery);

And then simply query using NativeSearchQueryBuilder, as shown in snippet below:

NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder()
            .withIndices("YOUR_INDEX_NAME")
            .withTypes("EVENT_TYPE_NAME").withQuery(boolQuery)
            .withPageable(new PageRequest(0, 60));

SearchQuery searchQuery = queryBuilder.build();

Above snippet will generate a search query to find the type field with value 0.

You can use ElasticSearchTemplate to query elastic Search as shown below:

ElasticSearchTemplate  template = new ElasticSearchTemplate();
.queryForList(searchQuery, YOUR_CLASS.class).forEach(System.err::println);

So your final java code will look something like this:

BoolQueryBuilder boolQuery = new BoolQueryBuilder();
TermQueryBuilder termQuery = new TermQueryBuilder("tasks.type", 0);
boolQuery.must(termQuery);
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder()
        .withIndices("YOUR_INDEX_NAME")
        .withTypes("EVENT_TYPE_NAME").withQuery(boolQuery)
        .withPageable(new PageRequest(0, 60));

SearchQuery searchQuery = queryBuilder.build();
ElasticSearchTemplate  template = new ElasticSearchTemplate();
template.queryForList(searchQuery, YOUR_CLASS.class).forEach(System.err::println);

Upvotes: 2

Related Questions