QueryBuilder queryBuilder = null;
// 1.查询name为zhangsan的数据
queryBuilder = QueryBuilders.termQuery("name", "zhangsan");
// name前缀为zhang的数据
queryBuilder = QueryBuilders.disMaxQuery()
.add(QueryBuilders.termQuery("name", "zhangsan"))
.add(QueryBuilders.prefixQuery("name", "zhang"));
// 查询name 为zhangsan,lis1的数据,有两者中的任一个即为匹配
queryBuilder = QueryBuilders.termsQuery("name", "zhangsan", "lis1");
// 常用词查询
queryBuilder = QueryBuilders.commonTermsQuery("name", "zhangsan");
// age/name/address中包含2的记录
queryBuilder = QueryBuilders.multiMatchQuery("2", "age", "name",
"address");
// 条件组合查询
queryBuilder = QueryBuilders
.boolQuery()
.must(QueryBuilders.disMaxQuery().add(
QueryBuilders.prefixQuery("name", "jmk")))
.mustNot(QueryBuilders.termQuery("address", false));
// .should(QueryBuilders.termQuery("age", "23"));
// 正则匹配 查询name中包含jmk的记录
queryBuilder = QueryBuilders.regexpQuery("name", ".*?jmk.?+");
String[] likeTexts = { "jmk" };
queryBuilder = QueryBuilders.moreLikeThisQuery(likeTexts);
// 查询所有
queryBuilder = QueryBuilders.matchAllQuery();
// SearchRequestBuilder builder = client.prepareSearch(index)
// .setTypes(type).setQuery(queryBuilder)
// .addSort("age", SortOrder.DESC);
SearchResponse response = client.prepareSearch().setIndices(index)
.setTypes(type).setQuery(queryBuilder).setFrom(0).setSize(100)
// .addSort("createTime", SortOrder.DESC)
// .addSort(SortBuilders.fieldSort("age").order(SortOrder.DESC))
//
// addSort(SortBuilders.fieldSort("title.untouched").order(SortOrder.ASC))
.execute().actionGet();
client.close();
// SearchResponse response = builder.execute().actionGet();
SearchHits result = response.getHits();
// 结果总数
long total = result.getTotalHits();
System.out.println("total:" + total);
List<String> resultList = new ArrayList<String>();
for (SearchHit hit : result) {
resultList.add(hit.getSourceAsString());
}
return resultList;
转载于:https://my.oschina.net/keke412/blog/906722