SpringBoot で elasticSearch クエリを実行し、QueryBuilders を使用してさまざまな条件付きクエリを構築します

すべてをクエリする

//搜索全部文档
QueryBuilder queryBuilder =
QueryBuilders.matchAllQuery();

単一のクエリ、/eq に等しい

//单个匹配,搜索name为li的文档
QueryBuilder queryBuilder =
QueryBuilders.matchQuery("name", "li");

複数のフィールドをクエリして特定の値と一致させる

//搜索name中或nickname中包含有li的文档(必须与li一致)
QueryBuilder queryBuilder =
QueryBuilders.multiMatchQuery("li","name", "nickname");

ファジーマッチ

//搜索名字中含有li文档(name中只要包含li即可)
WildcardQueryBuilder queryBuilder =
QueryBuilders.wildcardQuery("name","*li*");

BoolQueryBuilder 複合クエリ

BoolQueryBuilder オブジェクトは、must メソッドを使用して構築し、複数の must を使用します。

WildcardQueryBuilder queryBuilder1 = QueryBuilders.matchQuery("name", "li");
WildcardQueryBuilder queryBuilder2 = QueryBuilders.matchQuery("id", "1");

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//查询名字是LI和id是1的所有数据
boolQueryBuilder.must(queryBuilder1);
boolQueryBuilder.must(queryBuilder2);

BoolQueryBuilder オブジェクトは、 should メソッドを使用して構築するか、複数の should use を使用します。

WildcardQueryBuilder queryBuilder1 = QueryBuilders.matchQuery("name", "li");
WildcardQueryBuilder queryBuilder2 = QueryBuilders.matchQuery("id", "1");

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//查询名字是LI或id是1的所有数据
boolQueryBuilder.should(queryBuilder1);
boolQueryBuilder.should(queryBuilder2);

must:必须满足的条件

should:非必须满足的条件

minimumShouldMatch(1):至少要满足一个 should 条件

同等のクエリ

BoolQueryBuilder queryBuilder =
QueryBuilders.boolQuery().must(QueryBuilders.termQuery("name", "小李"));

範囲クエリ

BoolQueryBuilder queryBuilder =
QueryBuilders.rangeQuery("age").gte(18).lte(50);

ヌルクエリ

BoolQueryBuilder queryBuilder =
QueryBuilders.boolQuery()
.must(QueryBuilders.existsQuery("name"))
.mustNot(QueryBuilders.existsQuery("tag"));
//查询name有值,tag不存在值

ページングクエリ

SearchResponse response =
this.transportClient
.prepareSearch(index)
.setTypes(type)
.setQuery(queryBuilder)
.setFrom(offset)
.setSize(rows)
.setExplain(false)
.execute()
.actionGet();

この記事が役に立った場合は、「Lingye Jun」に高評価を押していただき、ありがとうございます。

最初のリンク: https://www.cnblogs.com/lingyejun/p/17557467.html

おすすめ

転載: blog.csdn.net/lingyejun/article/details/131778652