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的唯一问题。很难解释整个情况,我已经解释了好几次了。