1.match query
/**
* 一个string 在一个字段
* 查询一个字段
* match query
*/
@Test
public void match() {
QueryBuilder builder = QueryBuilders.matchQuery("interests", "changge");
SearchResponse response = client.prepareSearch("lib3")
.setQuery(builder)
.setSize(3)
.get();
SearchHits hits = response.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
}
2.multiMatchQuery
/**
* 一个string 在多个字段
* 查询多个字段
*/
@Test
public void match_Query() {
QueryBuilder builder = QueryBuilders.multiMatchQuery("changge", "address", "interests");
SearchResponse response = client.prepareSearch("lib3")
.setQuery(builder)
.setSize(3)
.get();
SearchHits hits = response.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
}
3.term 查询
/**
* 一个字段含有一个string
* term 查询
*/
@Test
public void term() {
QueryBuilder builder = QueryBuilders.termQuery("interests", "changge");
SearchResponse response = client.prepareSearch("lib3")
.setQuery(builder)
.setSize(3)
.get();
SearchHits hits = response.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
}
4.terms 查询
/**
* 一个字段含有多个string
* terms 查询
*/
@Test
public void terms() {
QueryBuilder builder = QueryBuilders.termsQuery("interests", "changge", "tiaowu");
SearchResponse response = client.prepareSearch("lib3")
.setQuery(builder)
.setSize(3)
.get();
SearchHits hits = response.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
}
5.各种查询
/**
* 各种查询
*/
@Test
public void selectM() {
// range查询
// QueryBuilder builder = QueryBuilders.rangeQuery("birthday").from("1990-01-01").to("2000-01-01");
// prefix查询 (前置查询)
// QueryBuilder builder = QueryBuilders.prefixQuery("name","zhao");
// wildcard查询
// QueryBuilder builder = QueryBuilders.wildcardQuery("name","zhao*");
// fuzzy查询(模糊查询)
// QueryBuilder builder = QueryBuilders.fuzzyQuery("interests", "changge");
// type查询
// QueryBuilder builder = QueryBuilders.typeQuery("blog");
// id查询
QueryBuilder builder = QueryBuilders.idsQuery().addIds("1","3");
SearchResponse response = client.prepareSearch("lib3")
.setQuery(builder)
.setSize(3)
.get();
SearchHits hits = response.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
}
6.全文查询
/**
* 全文查询
*/
@Test
public void queryString(){
// QueryBuilder builder = QueryBuilders.commonTermsQuery("name","zhaoliu");
// 精确查找:+ 必须含有, - 不含有
// QueryBuilder builder = QueryBuilders.queryStringQuery("+changge -hejiu");
// 满足一个就能查出来
QueryBuilder builder = QueryBuilders.simpleQueryStringQuery("+changge -hejiu");
SearchResponse response = client.prepareSearch("lib3")
.setQuery(builder)
.setSize(3)
.get();
SearchHits hits = response.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
}
7.组合查询
// 组合查询
@Test
public void test4(){
// QueryBuilder builder = QueryBuilders.boolQuery()
// .must(QueryBuilders.matchQuery("interests","cahngge"))
// .mustNot(QueryBuilders.matchQuery("interests","lvyou"))
// .should(QueryBuilders.matchQuery("address","bei jing"))
// .filter(QueryBuilders.rangeQuery("birthday").gte("1990-01-01").format("yyyy-MM-dd"));
// constantscore
QueryBuilder builder = QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("name","zhaoliu"));
SearchResponse response = client.prepareSearch("lib3")
.setQuery(builder)
.setSize(3)
.get();
SearchHits hits = response.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
}