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

弹性搜索查询所有字段,包括嵌套字段

程鸿煊
2023-03-14

我使用的是ES版本5.6。我有一个像下面这样的文档存储在ES中。

{
  "swType": "abc",
  "swVersion": "xyz",
  "interfaces": [
     {
        "autoneg": "enabled",
        "loopback": "disabled",
        "duplex": "enabled"
     },
     {
        "autoneg": "enabled",
        "loopback": "disabled",
        "duplex": "enabled"
     }
  ]
}

我想搜索所有已“启用”的字段。

我尝试了以下查询,但都不起作用。

curl -XGET "http://esserver:9200/comcast/inventory/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match":{
       "_all": "enabled"
     }
   }
}'



curl -XGET "http://esserver:9200/comcast/inventory/_search" -H 'Content-Type: application/json' -d'
        {
          "query": {
            "query_string": {
              "query": "enabled",
              "fields": ["*"]
            }
          }
        }'

但是下面的查询起作用了

curl -XGET "http://esserver:9200/comcast/inventory/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match":{
       "_all": "abc"
     }
   }
}'

因此,看起来_all只匹配顶级字段,而不匹配嵌套字段。是否有任何方法可以查询包含在所有字段中的文本,包括嵌套字段。我不想显式指定嵌套字段名。我正在寻找一种全局搜索,我想在文档中的任何地方搜索“文本”。

谢了。

共有1个答案

杨柏
2023-03-14

好的。开始工作了。我设置了mappingdynamic:false。看起来ES只在映射中指定的字段中搜索,而我的搜索词是在动态添加的字段中搜索的。

使动态化:'strict'帮助我缩小了问题的范围。

 类似资料:
  • 我试图为一个业务场景制定一个查询,其中我们有一个名为“types”的嵌套字段类型(即类似于字符串的ArrayList)。下面是以“类型”作为字段之一的索引文档示例。 文件1:{“类型”:[{“标签”:“对话”,},{“标签”:“暴力”,},{“标签”:“语言”,}} 文档2:{“类型”:[{“标签”:“对话框”,}} 现在,要求搜索查询最多匹配字段值中的一个值,即如果用户搜索“对话框”,那么它应该

  • 基本问题如下:有没有一种方便的方法可以为嵌套查询的所有字段指定多字段匹配?对于普通查询有效。这在嵌套查询中不起作用,可能是因为嵌套对象没有_all? 下面是更详细的问题: 我有一个名为“Parent”的嵌套文档,如下所示: 这是我用于制作儿童嵌套对象的映射: 这是一个查询,我想使用所有子字段的匹配来选择几个术语查询,以及一个术语查询: 上述查询不起作用,因为我无法为嵌套对象选择多匹配查询中的所有字

  • 我正在尝试从索引中获取城市为空的所有记录。 源看起来像: 因此,当我试图只搜索那些城市为空的源代码时,我会收到不同类型的错误。 must\u not exists返回包含非空城市的源。 我尝试了不同类型的脚本来过滤掉数据,但没有结果。 _mapping请求,城市有嵌套类型。 请给出建议

  • 我有一个弹性搜索索引集合,如下所示, 现在我需要通过将与其值匹配来搜索文档。(是一些字段,其值存储在中)例如。对于字段,如果它是,则应与上述文档匹配。 我尝试将其映射为嵌套对象,但我无法编写查询来搜索与其相应值匹配的2个或更多的键id。

  • 如何获得空数组和美国的结果和

  • 我试图获取嵌套文档中有两个名称的文档,但是< code>must子句作为“OR”而不是“AND”工作。下面是一个例子: 映射: 索引3个文档: 我正在寻找在同一文档中与 的文档,使用上述数据只有文档会匹配。我尝试了这个查询: 它与所有文档匹配,因为所有文档都有“John Smith”或“Alice White”。改进此查询以具有两个分离的匹配项,每个值一个匹配器: 那么,我的问题是,如何构建一个查