elasticsearch,multi-select,faceted-search,facets,Filter,elasticsearch,Multi Select,Faceted Search,Facets" /> elasticsearch,multi-select,faceted-search,facets,Filter,elasticsearch,Multi Select,Faceted Search,Facets" />

Filter Elasticsearch多选镶嵌面

Filter Elasticsearch多选镶嵌面,filter,elasticsearch,multi-select,faceted-search,facets,Filter,elasticsearch,Multi Select,Faceted Search,Facets,假设我们有以下文档: curl -XPUT 'http://localhost:9200/multiselect/demo/1' -d '{ "title": "One", "tags": ["tag1"], "keywords": ["keyword1"] }' curl -XPUT 'http://localhost:9200/multiselect/demo/2' -d '{ "title": "Two", "tags": ["tag2"],

假设我们有以下文档:

curl -XPUT 'http://localhost:9200/multiselect/demo/1' -d '{
    "title": "One",
    "tags": ["tag1"],
    "keywords": ["keyword1"]
}'

curl -XPUT 'http://localhost:9200/multiselect/demo/2' -d '{
    "title": "Two",
    "tags": ["tag2"],
    "keywords": ["keyword2"]
}'
如果我们进行查询:

curl -XGET '
{
    "post_filter": {
        "and": [
            {
                "terms": {
                    "tags": [
                        "tag1",
                        "tag2"
                    ]
                }
            },
            {
                "terms": {
                    "keywords": [
                        "keyword1"
                    ]
                }
            }
        ]
    },
    "aggs": {
        "tagFacet": {
            "aggs": {
                "aggs": {
                    "terms": {
                        "field": "tags",
                        "size": 0
                    }
                }
            },
            "filter": {
                "terms": {
                    "keywords": [
                        "keyword1"
                    ]
                }
            }
        },
        "keywordFacet": {
            "aggs": {
                "aggs": {
                    "terms": {
                        "field": "keywords",
                        "size": 0
                    }
                }
            },
            "filter": {
                "terms": {
                    "tags": [
                        "tag1",
                        "tag2"
                    ]
                }
            }
        }
    }
}
'
我们将有一个文档1和一个facet列表:tag1-1、keyword1-1、keyword2-0和tag2-1,但实际上最后一个tag2不应该在那里,因为我们的过滤器和facet中没有关键字2的任何内容

问题是,是否有可能在没有tag2的情况下获得facet,而不进行2次请求

如果你需要更好的解释,请告诉我,但我想基本的想法应该很清楚

另外,你可以在这里找到以下模式的更好解释:;这是同样的事情,也有同样的问题


你不能使用聚合吗?实际上我使用的是聚合,但它的工作原理相同!如果我没弄错的话,你能再看一遍吗?哦,我忘了包括post_过滤器块:对不起。想法如下,一切正常,UI的唯一问题。很难解释整个情况,我已经解释了好几次了。