0

我有一个如下所示的映射:

"mappings": {
    "mydoc": {
        "properties": {
            "event": {
                "type": "nested",
                "properties": {
                    "eventType": {
                        "type": "string"
                    },
                    "idList": {
                        "type": "integer"
                    },
                    "id": {
                        "type": "integer"
                    },
                }
            }
        }
    }
}

一个 mydoc 文档包含一个嵌套的事件文档数组。

在 mydoc 文档中,我想找到所有 ID:

  • 存在 event.type='A' 的事件并且 event.idList 包含一些 ID X
  • 存在另一个 event.type='B' 且 event.id 等于 X 的事件

在整个索引中,我想要一个符合此标准的 ID 列表,以及发生在其中的 mydoc 文档数量的计数(针对每个 ID)。

是否有可能在 ElasticSearch 中实现这一点?我在想可能使用嵌套的构面过滤器或术语过滤器查找,但我还没有看到用这些方法来做到这一点。

4

1 回答 1

0

我认为父子关系可能比嵌套文档更适合您的情况。
然后,如果您仅在事件范围内搜索(或在_parent字段上添加条件以限制到特定的顶级文档),则可以直接查询您的(子)事件文档。
您可以使用 has_child 过滤器或查询在您的顶级文档中搜索(或构面)事件条件(请参阅http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl- has-child-filter.html )

于 2013-11-03T12:55:43.093 回答