![](/img/trans.png)
[英]How do I combine multiple filter query and should of Elastic Search using Java Library (QueryBuilder)
[英]How to handle multiple 'and' 'or' operators in Elastic search Querybuilder in java
我有一个 POST 正文 JSON,它具有如下输入之一
q = (a=1 and b=2 or c=3 and d=8)
我需要使用java形成一个querybuilder弹性查询
BoolQueryBuilder qb = QueryBuilders.boolQuery();
qb1= QueryBuilders.matchQuery("a", "1");
qb2= QueryBuilders.matchQuery("b", "2");
qb3= QueryBuilders.matchQuery("c", "1");
qb4= QueryBuilders.matchQuery("d", "1");
qb.must(qb1);
qb.must(qb2);
qb.should(qb3);
qb.must(qb4);
弹性搜索是否会先处理和操作,然后再考虑。
如何处理多个和和或组合(用户可以自由输入任何内容)。 我是 Elastic 搜索的新手,希望得到一些帮助
我认为bool查询可能对您有帮助
{
"bool" : {
"should" : [
{ "must" : { "term" : { "a" : "1" } } },
{ "must" : { "term" : { "b" : "1" } } }
]
"should" : [
{ "must" : { "term" : { "c" : "1" } } },
{ "must" : { "term" : { "d" : "1" } } }
]
}
}
分享一个伪代码,希望有帮助
elasticbuilder.boolQuery().should([
elasticbuilder.boolQuery().must([
elasticbuilder.matchQuery(1)
elasticbuilder.matchQuery(2)
])
elasticbuilder.boolQuery().must([
elasticbuilder.matchQuery(3)
elasticbuilder.matchQuery(4)
])
])
通常我只是在 Kibana 中创建一个示例查询,然后将它“翻译”到 Java 客户端 api。 不确定这是否适用于您,但如果您想创建全文搜索,您可以根据ES 文档中的内容向用户提供提示。
The simple_query_string query supports the following operators: + signifies AND operation | signifies OR operation - negates a single token " wraps a number of tokens to signify a phrase for searching * at the end of a term signifies a prefix query ( and ) signify precedence ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.