gpt4 book ai didi

elasticsearch - 如何使用 Elasticsearch 创建带有 or 子句的搜索

转载 作者:行者123 更新时间:2023-12-02 22:15:17 25 4
gpt4 key购买 nike

我想使用 Elasticsearch Java API 创建查询,但我不知道如何创建 OR 子句?我要查询的是;

SELECT * 
FROM USERS
WHERE (user.name = "admin") AND (user.message LIKE "test*") AND (user.age = "30" OR user.status = "major")

我已经创建了如下查询,但我不知道如何创建类似 sql 查询的 OR 子句;

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

boolQueryBuilder.must(QueryBuilders.matchQuery("name", "admin"));
boolQueryBuilder.must(QueryBuilders.matchQuery("message", "test*"));

boolQueryBuilder.must(QueryBuilders.matchQuery("age", "30"));
boolQueryBuilder.must(QueryBuilders.matchQuery("status","major"));

最佳答案

您只需要在另一个 bool/should 查询中捕获 OR 条件

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

boolQueryBuilder.must(QueryBuilders.matchQuery("name", "admin"));
boolQueryBuilder.mustNot(QueryBuilders.matchQuery("message", "test*"));

BoolQueryBuilder orQuery = QueryBuilders.boolQuery();
orQuery.should(QueryBuilders.matchQuery("age", "30"));
orQuery.should(QueryBuilders.matchQuery("status","major"));
orQuery.minimumNumberShouldMatch(1);
boolQueryBuilder.must(orQuery);

PS:不知道为什么你的第二个约束有一个 mustNot

关于elasticsearch - 如何使用 Elasticsearch 创建带有 or 子句的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42718041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com