将嵌套文档链接在一起并在ElasticSearch中进行构面

时间:2013-11-03 00:08:39

标签: search lucene elasticsearch

我的映射看起来像这样:

"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中实现这一目标?我认为使用嵌套构面过滤器或术语过滤器查找可能是可能的,但我还没有看到这样做的方法。

1 个答案:

答案 0 :(得分:0)

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