1.CriteriaQuery
标准查询
1 2 3 4 5 6
| Criteria criteria = new Criteria("id").is("1"); CriteriaQuery query = new CriteriaQuery(criteria); query.addIndices("test"); query.addTypes("test"); query.setPageable(PageRequest.of(page, size)) List<TestObject> list = template.queryForList(criteria, TestObject.class);
|
2.SearchQuery
可以定义查询(query)和过滤(filter)
查询(query):用于检查内容与条件是否匹配,并且计算_score元字段表示匹配度,查询的结构中以query参数开始来执行内容查询
过滤(filter):不计算匹配得分,只是简单地决定文档是否匹配,内容过滤主要用于过滤结构化的数据
1 2 3 4 5 6
| SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery( QueryBuilders.matchQuery("id", "1")) .withIndices("test") .withTypes("test") .build(); List<TestObject> list = template.queryForList(searchQuery, TestObject.class);
|
3.StringQuery
基于DSL定义的JSON的查询
1 2 3 4 5 6 7
| StringQuery stringQuery = new StringQuery( "{\"query\":{\"bool\":{\"must\":[{\"term\":{\"id\":\"1\"}}],\"must_not\":[], \"should\":[]}},\"from\":0,\"size\":10,\"sort\":[],\"aggs\":{}}"); searchQuery.addIndices("test"); searchQuery.addTypes("test"); List<TestObject> list = template.queryForList(stringQuery, TestObject.class);
|