gpt4 book ai didi

elasticsearch - 查询嵌套数组中不包含给定对象的文档

转载 作者:行者123 更新时间:2023-12-03 00:46:03 26 4
gpt4 key购买 nike

我有这样的结构:

{ "id": "object1", "fields": [{"id": 100, "value": "one"}, {"id": 101, "value": "abc"}]}
{ "id": "object2", "fields": [{"id": 100, "value": "two"}, {"id": 101, "value": "cde"}]}
{ "id": "object3", "fields": [{"id": 100, "value": "three"}]}

其中字段是 嵌套数据类型。

通过嵌套查询,我可以获取具有给定字段特定值的所有对象(例如,使用field.id = 101 && field.value =“abc”可以获取object1)。

如何查询其字段数组 不包含其ID的给定字段的对象?
  • 示例1:我希望所有不具有ID为101的字段的对象-
    返回object3
  • 示例2:我希望所有没有字段的对象
    ID 102-返回object1、2和3

  • 我要寻找的基本上是一个存在谓词的存在查询(然后可以对其求反)。

    最佳答案

    由于您正在处理嵌套文档,因此您希望如果两个嵌套文档都不符合条件,则应将该文档视为匹配项。如果我改写这个意思,我可以说不要获取嵌套条件与条件匹配的文档。将其翻译为查询dsl,

    GET <index>/_search
    {
    "query": {
    "bool": {
    "must_not": [
    {
    "nested": {
    "path": "fields",
    "query": {
    "term": {
    "fields.id": 101
    }
    }
    }
    }
    ]
    }
    }
    }

    关于elasticsearch - 查询嵌套数组中不包含给定对象的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61216365/

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