过滤facet会导致使用ElasticSearch嵌套元素

时间:2012-11-04 16:53:48

标签: elasticsearch

我有这个映射:

products: {
    product: {
        properties: {
            id: {
                type: "long"
            },
            name: {
                type: "string"
            },
            tags: {
                dynamic: "true",
                properties: {
                    tagId: {
                        type: "long"
                    },
                    tagType: {
                        type: "long"
                    }
                }
            }
        }
    }
}

我想在标记ID上创建一个facet,但是使用标记类型过滤。 我需要过滤器只应用于facet而不是查询结果。 所以这是我的要求:

{
"from": 0,
"size": 10,
"facets": {
    "tags": {
        "terms": {
            "field": "tags.tagId",
            "size": 10
        },
        "facet_filter": {
            "terms": {
                "tags.tagType": [
                    "11",
                    "19"
                ]
            }
        }
    }
},
"query": {
    "match_all": {}
}

}

构面过滤似乎不会影响构面。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

过滤器应用于文档,即示例中的父实体。这意味着您要按tags.tagType过滤您构成方面的文档。因此,所有具有特定tags.tagType值的文档都用于构建构面,这不是我想要的。

这是nested文档的用例。您也可以查看this nice article