当前位置: 首页 > 知识库问答 >
问题:

如何将不同的搜索参数组合在elasticscsearch dsl查询中?

白嘉志
2023-03-14

大家好,

我在Elastic/Kibana有点问题。在Kibana查询语言“KQL”中,我可以执行某个查询:

car:* AND coun: * AND doc: (bes* OR *rvr*) AND NOT coun: (SIP OR LUK)

我想使用ElasticsSearch查询DSL将其用作过滤查询。只是我没有得到同样的结果。为此,我使用布尔运算符。我的查询如下所示:

{
  "query": {
    "bool": {
      "must": [
        {
          "exists": {
            "field": "car"
          }
        },
        {
          "exists": {
            "field": "coun"
          }
        }
      ],
      "should": [
        {
          "wildcard": {
            "doc.keyword": {
              "value": "bes*"
            }
          }
        },
        {
          "wildcard": {
            "doc.keyword": {
              "value": "*rvr*"
            }
          }
        }
      ],
      "must_not": [
        {
          "term": {
            "coun.keyword": "SIP"
          }
        },
        {
          "term": {
            "coun.keyword": "LUK"
          }
        }
      ],
      "minimum_should_match": 1
    }
  }
}

不幸的是,我没有得到相同的结果。我的猜测是“应该”运算符。但是我不知道如何准确地调整代码。

如果有任何答案,我将不胜感激!多谢!

共有1个答案

陈琪
2023-03-14

这里的问题是,你把它放在外面。只需将<code>中的<code>should

GET _search
{
  "query": {
    "bool": {
      "must": [
        {
          "exists": {
            "field": "car"
          }
        },
        {
          "exists": {
            "field": "con"
          }
        },
        {
          "bool": {
            "should": [
              {
                "wildcard": {
                  "doc.keyword": {
                    "value": "bes*"
                  }
                }
              },
              {
                "wildcard": {
                  "doc.keyword": {
                    "value": "*rvr*"
                  }
                }
              }
            ]
          }
        }
      ],
      "must_not": [
        {
          "term": {
            "coun.keyword": "SIP"
          }
        },
        {
          "term": {
            "coun.keyword": "LUK"
          }
        }
      ],
      "minimum_should_match": 1
    }
  }
}
 类似资料:
  • 如何获得空数组和美国的结果和

  • 问题内容: 我有以下情况。我需要基于某些参数构建猫鼬查询。 也就是说,如果通过这样的对象 执行以下搜索: 如果如果动作不在对象中,则需要从搜索中排除“动作”,该怎么办?像这样使用三元运算符不起作用,就像在DB中的is中搜索条目一样。 问题答案: 以编程方式建立查询对象:

  • 我是Elasticsearch的新手,我面临一个问题。我的任务是搜索一组文档。例如,我有这样结构的数据: 但是困难的是,我如何获取所有带有project_id=abc的文档,然后通过与关键字“测试”匹配的任何其他字段(代码、名称、状态)搜索它们(例如)。我如何在Elasticsearch查询中做到这一点,请帮助我! 谢谢

  • 问题内容: 这是我的简单表格: 这是我的Express.js /Node.js代码: 我试过或或,等等。它们都不起作用。他们都回来了。 当我更改为Get呼叫时,它可以工作,所以..有什么想法吗? 问题答案: 事情已经改变了再次启动 快速4.16.0 ,您现在可以使用与就像在 快车3.0 。 从 Express 4.0到4.15,* 这是不同的: * 然后: 其余的就像在 Express 3.0中一

  • elasticsearch实例的一些背景: 一个节点,在一台机器上 特定索引由大小为1.23TB的26亿文档组成 索引被分成4个碎片。 堆大小设置为30 GB 服务器有256GB内存和40个内核。 Elasticsearch(版本1.4.3)是这个服务器上唯一运行的东西 我想返回所有具有特定名称的文档。属性名称已映射为: 我尝试过使用不同类型的搜索;过滤器、查询字符串、术语。结果都一样。当前查询如

  • 本文向大家介绍PowerShell查找数组内容、搜索数组、查询数组的方法,包括了PowerShell查找数组内容、搜索数组、查询数组的方法的使用技巧和注意事项,需要的朋友参考一下 PowerShell中有-contain、-like、-in等操作符,使用这些操作符,可以很方便的在数组中查找元素内容。其中in操作符貌似要在PowerShell 3.0中才有。 先看一个例子,将Windows目录的所有