1

我有这个映射:

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

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

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

}

分面过滤似乎不会影响分面。有任何想法吗?

4

1 回答 1

1

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

这是嵌套文档的用例。你也可以看看这篇不错的文章

于 2012-11-05T11:55:20.207 回答