ElasticSearch 集成查询 BoolQueryBuilder 使用汇总

BoolQueryBuilder

创建查询对象

BoolQueryBuilder bool = new BoolQueryBuilder();

匹配数据

精准匹配

完全匹配一个值
bool.must(QueryBuilders.termQuery(key, value));
完全匹配多个值
bool.must(QueryBuilders.termsQuery(key, value1, value2, value3));

包含匹配

bool.must(QueryBuilders.matchPhraseQuery(key, value));
  • 使用 matchQuery 时,在执行查询时,搜索的词会被分词器分词。
  • 使用 matchPhraseQuery 时,不会被分词器分词,而是直接以一个短语的形式查询。

应该 (should) 匹配

should:代表可选满足的查询条件,类似于 “或” 的关系。

例如,查询文档中同时包含关键词 “Elasticsearch” 和 “Java”,或者包含关键词 “Elastic”,可以使用如下查询:

bo.should(QueryBuilders.boolQuery()
        .must(QueryBuilders.matchQuery("title", "Elasticsearch"))
        .must(QueryBuilders.matchQuery("content", "search")));

过滤 (filter) 匹配