gpt4 book ai didi

elasticsearch - 如何通过AND和OR逻辑(AND内的OR逻辑)的组合定义DSL查询?

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

我想定义一个DSL查询,以在下面的Lucene中描述该查询:

q = role:(admin OR manager) AND priority:(high OR middle).

我知道我可以使用 should指示 OR逻辑,但是,下面的DSL查询:
{
"query": {
"bool": {
"should": [
{
"match": {
"role": "admin"
}
},
{
"match": {
"role": "manager"
}
},
{
"match": {
"priority": "high"
}
},
{
"match": {
"priority": "middle"
}
}
],
"minimum_should_match": "2"
}
}
}

不能实现我所需要的,因为数据
{
"role": [ "admin", "manager"],
"priority": "low"
}

会被视为有效,但事实并非如此。

如何解决DSL查询?我正在使用ElasticSearch 5.2.2,谢谢!

最佳答案

您需要这样做:

{
"query": {
"bool": {
"filter": [
{
"bool": {
"minimum_should_match": "1",
"should": [
{
"match": {
"role": "admin"
}
},
{
"match": {
"role": "manager"
}
}
]
}
},
{
"bool": {
"minimum_should_match": "1",
"should": [
{
"match": {
"priority": "high"
}
},
{
"match": {
"priority": "middle"
}
}
]
}
}
]
}
}
}

关于elasticsearch - 如何通过AND和OR逻辑(AND内的OR逻辑)的组合定义DSL查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55948109/

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