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

弹性搜索嵌套查询 - 排除父文档

康烨伟
2023-03-14

尝试排除其中一个子文档与查询不匹配的顶级文档。

对于下面的示例,我试图排除其中一个嵌套作业具有current:true并且与公司名称:Elastic匹配的所有文档。但是,由于其中一个嵌套作业文档与current:false和公司名称:Elastic匹配,因此返回此文档。我使用的是一个嵌套查询,其中公司名称必须匹配,并且过滤器的当前值为false。我如何才能使以下文件不被退回?

 "name": "john doe",
      "jobs": [
        {
          "title": "Vice President",
          "current": true,
          "company": {
            "name": "Elastic"
          }
        },
        {
          "title": "CEO",
          "current": false,
           "company": {
             "name": "Elastic"
          }
     ...

共有1个答案

堵睿范
2023-03-14

这个怎么样?请注意,我假设您有一个<code>。关键字sub0field基本上与大写字母完全匹配。如果不同,请相应更改字段名称:

{
  "query": {
    "bool": {
      "must_not": [
        {
          "nested": {
            "path": "jobs",
            "query": {
              "bool": {
                "must": [
                  {
                    "term": {
                      "jobs.current": {
                        "value": "true"
                      }
                    }
                  },
                  {
                    "term": {
                      "jobs.company.name.keyword": {
                        "value": "Elastic"
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  }
}
 类似资料:
  • 我有一个弹性搜索索引集合,如下所示, 现在我需要通过将与其值匹配来搜索文档。(是一些字段,其值存储在中)例如。对于字段,如果它是,则应与上述文档匹配。 我尝试将其映射为嵌套对象,但我无法编写查询来搜索与其相应值匹配的2个或更多的键id。

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

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

  • 我有一个嵌套文档,如: 据此,https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html,以上内容应匹配: } 鉴于以下情况不应出现:, 但不幸的是两者不匹配。有什么想法吗?

  • 我正在LDAP服务器上工作。它有弹性搜索。我必须用一些Javascript代码(JSON格式)发送查询。 这是我的查询: 我试图打印所有结果,其中“server”=“server\u name”(该字段是server:server\u name…)。我认为关于弹性搜索的文档太小了。我找到了一些文档,但都是一样的,对新用户没有帮助。这个例子太简单了。 此查询返回所有结果,包括任何筛选器。 Ps:这就

  • 我正在尝试使用C#使用Nest进行匹配查询。Match查询不会返回任何结果,因为生成的JSON的语法似乎不正确,我确信有一些文档包含此关键字。下面是C代码片段 这将生成以下查询: 但是,当我在Kibana控制台Get\u search中调整同一查询时,该查询返回0个结果 我得到搜索词的结果。请注意,Kibana查询的语法中缺少“第二个查询标记”。 我确实检查了文档,似乎我的语法是正确的https: