1, 在elasticsearch-head 图形化界面端,
模糊查询标题含有“战”的查询(query,bool,must, 和match参数设置)。post 请求,_search参数,film索引下的dongzuo类,返回值有得分;
模糊查询标题含有“星球”,“战”的查询(query,bool,must, 和match参数设置)。post 请求,_search参数,film索引下的dongzuo类;返回值有得分;
java代码查询的方法searchMulti()方法,测试
@Test
public void searchMulti() throws Exception{
SearchRequestBuilder srb = client.prepareSearch("film").setTypes("dongzuo");
HighlightBuilder highlightBuilder =new HighlightBuilder();
QueryBuilder queryBuilder=QueryBuilders.matchPhraseQuery("title", "战");
QueryBuilder queryBuilder2=QueryBuilders.matchPhraseQuery("content", "星球");
SearchResponse sr = srb.setQuery(QueryBuilders.boolQuery()
.must(queryBuilder)
.must(queryBuilder2))
.execute()
.actionGet();
SearchHits hits = sr.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
}
2 模糊查询标题含有“战”,但是内容中不包含“武士”的查询(query,bool,must not, 和match参数设置)。post 请求,_search参数,film索引下的dongzuo类;写Java代码;
分页查询的方法searchMulti2()方法,测试
@Test
public void searchMulti2() throws Exception{
SearchRequestBuilder srb = client.prepareSearch("film").setTypes("dongzuo");
HighlightBuilder highlightBuilder =new HighlightBuilder();
QueryBuilder queryBuilder=QueryBuilders.matchPhraseQuery("title", "战");
QueryBuilder queryBuilder2=QueryBuilders.matchPhraseQuery("content", "武士");
SearchResponse sr = srb.setQuery(QueryBuilders.boolQuery()
.must(queryBuilder)
.mustNot(queryBuilder2))
.execute()
.actionGet();
SearchHits hits = sr.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
}
3 模糊查询标题含“一定”有“战”,内容中含“应该”有“武士”,发布时间“应该”大于“2018-01-01”的查询(query,bool,must,should,range ,gte, 和match参数设置)。post 请求,_search参数,film索引下的dongzuo类;should 参数影响得分,匹配度越高,得分越高,
写Java代码方法searchMulti3()方法,测试
@Test
public void searchMulti3() throws Exception{
SearchRequestBuilder srb = client.prepareSearch("film").setTypes("dongzuo");
QueryBuilder queryBuilder=QueryBuilders.matchPhraseQuery("title", "战");
QueryBuilder queryBuilder2=QueryBuilders.matchPhraseQuery("content", "星球");
QueryBuilder queryBuilder3=QueryBuilders.rangeQuery("publishDate").lte("2018-01-01");
SearchResponse sr = srb.setQuery(QueryBuilders.boolQuery()
.must(queryBuilder)
.should(queryBuilder2)
.should(queryBuilder3))
.execute()
.actionGet();
SearchHits hits = sr.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getScore()+":"+hit.getSourceAsString());
}
}
4 模糊查询标题含有“战”,票价小于40 的(query,bool,must,filter,should,range ,gte, 和match参数设置)。post 请求,_search参数,film索引下的dongzuo类;
写Java代码
@Test
public void searchMulti4() throws Exception{
SearchRequestBuilder srb = client.prepareSearch("film").setTypes("dongzuo");
QueryBuilder queryBuilder=QueryBuilders.matchPhraseQuery("title", "战");
QueryBuilder queryBuilder2=QueryBuilders.rangeQuery("price").lt("40");
SearchResponse sr = srb.setQuery(QueryBuilders.boolQuery()
.must(queryBuilder)
.filter(queryBuilder2))
.execute()
.actionGet();
SearchHits hits = sr.getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
}
第8讲 8.ElasticSearch组合多条件查询
猜你喜欢
转载自blog.csdn.net/u010393325/article/details/84102098
今日推荐
周排行