第8讲 8.ElasticSearch组合多条件查询

1, 在elasticsearch-head 图形化界面端,
   模糊查询标题含有“战”的查询(query,bool,must, 和match参数设置)。post 请求,_search参数,film索引下的dongzuo类,返回值有得分;

    8.ElasticSearch组合多条件查询
   模糊查询标题含有“星球”,“战”的查询(query,bool,must, 和match参数设置)。post 请求,_search参数,film索引下的dongzuo类;返回值有得分;
    8.ElasticSearch组合多条件查询
   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代码;
    8.ElasticSearch组合多条件查询
   分页查询的方法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 参数影响得分,匹配度越高,得分越高,

8.ElasticSearch组合多条件查询
   写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类;
    8.ElasticSearch组合多条件查询

写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());
       }
    }

猜你喜欢

转载自blog.csdn.net/u010393325/article/details/84102098