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

ElasticSearch:对嵌套对象属性和父属性进行查询

许典
2023-03-14

我有一些文档在嵌套对象中有嵌套对象:

{
    "started_at": 1455088063966,
    "ended_at": 1455088131966,
    "tags": [{
        "type": "transfer",
        "at": 1455088064462,
        "events": [{
            "type": "transfer_processed",
            "at": 1455088131981

        }]
    }, {
        "at": 1455088138232,
        "item": "tag",
        "type": "info"
    }]
}

在这里,主文档有几个嵌套的对象(标记),对于每个标记有几个嵌套的对象(事件)。

我希望获得transfer_processed类型的事件在transfer类型的标记之后60000毫秒内发生的所有文档。为此,我需要查询tags.at、tags.type、tags.events.at和tags.events.type。我不知道如何查询:我只查询tags.events属性,或者只查询tags属性,而不是两者都查询。

共有1个答案

微生新霁
2023-03-14

嵌套对象实际上是单独的Lucene文档,因此您实际上是试图将多个文档“连接”在一起进行比较。不幸的是,ElasticSearch不支持这一点。

看看这个类似的问题和答案,它们很好地解释了这一点。

 类似资料:
  • 问题内容: 我有一些文档在嵌套对象中具有嵌套对象: 在这里,主文档有几个嵌套对象(标签),每个标签有几个嵌套对象(事件)。 我想获得的所有地方类型的事件文件 transfer_processed 类型的标签后发生60000毫秒 转移 。为此,我需要同时查询 tag.at , tags.type , tags.events.at 和 tags.events.type 。而且我不知道怎么做:我只设法对

  • 问题内容: 我有以下我想用流程注释的内容: 我知道该怎么做了类型检查,这样的类型的(如上图所示),但我怎么能型检查其属性呢? 已经尝试过: 但是随后流程只是抱怨而从未使用过。 问题答案: 因此,您要发送类型为的道具,该道具必须具有属性和? 如果没有编写执行此检查的自定义函数,则无法实现。为此,您需要这样声明: 这是官方文档所说的: 您还可以指定一个自定义验证器。如果验证失败,它将返回一个Error

  • 我想用flow注释以下内容: 我知道如何对进行类型检查,以使的类型为(如上所示),但如何对其属性进行类型检查? 已经尝试过这个: 但是flow只是抱怨从未使用过和。

  • 我正在尝试反序列化一个 JSON 响应,其中包含一些标准字段和一个包含子类属性的 嵌套对象,例如: 字段< code>id和< code>type是标准的,所以我有一个基类< code>Base,然后扩展一些更具体的类: 如何让杰克逊读取 对象作为进一步字段值的来源?我假设我需要创建一个自定义反序列化程序,但我不确定如何具体完成此操作。

  • 问题内容: 我需要通过对象属性之一的一个属性比较对象数组。 我在做 : 它没有编译,有人知道怎么做吗? 谢谢。 问题答案: 这是代码中导致错误的部分 您可以创建对特定类型的任意对象的(静态或非静态)方法的引用。对任何类型的对象的方法的引用如下所示: 但是方法引用不是对象,并且没有成员可以访问。使用此代码,您尝试访问引用的成员变量(并且不能) 另外,方法引用不是类,因此您不能从它们中获取另一个方法引