一架梯子,一头程序猿,仰望星空!

Java Elasticsearch Match Phrase 短语查询


Elasticsearch的match_phrase短语查询跟match的区别就是,关键词作为一个整体进行搜索,而不是拆分成一个个关键词。

创建MatchPhraseQueryBuilder

有两种方式创建MatchPhraseQueryBuilder

  • 直接实例化MatchPhraseQueryBuilder
  • 通过QueryBuilders工具创建

方式1

直接实例化MatchPhraseQueryBuilder对象。
构造方法参数说明:

  • 参数1 - 字段名
  • 参数2 - 匹配短语
MatchPhraseQueryBuilder matchPhraseQueryBuilder = new MatchPhraseQueryBuilder("title", "Elasticsearch 查询语法");

方式2

通过QueryBuilders工具创建

// 可以直接赋值给QueryBuilder接口定义的对象
QueryBuilder matchPhraseQueryBuilder = QueryBuilders.matchPhraseQuery("title", "Elasticsearch 查询语法");

创建SearchRequest

Java 所有的ES查询请求都是通过SearchRequest对象进行设置,因此需要实例化SearchRequest对象,设置query参数。

SearchRequest searchRequest = new SearchRequest();

// 通过SearchSourceBuilder构建搜索参数
SearchSourceBuilder builder = new SearchSourceBuilder();
// 设置query参数,绑定前面创建的Query对象
builder.query(matchPhraseQueryBuilder);

// 设置SearchRequest搜索参数
searchRequest.source(builder);

执行请求

// 执行ES请求
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

提示: 如何处理查询结果,请参考 Java ES查询基本写法