我正在使用Elasticsearch索引具有所有者的文档,该所有者存储在源对象的userId属性中。我可以轻松地对userId进行构面,并为每个拥有者获取构面,但我希望像这样显示拥有者的构面:
我可以在客户端上处理此问题,并获取elasticsearch返回的所有方面,并仔细研究并找出当前用户拥有的所有方面,而不是适当地显示它们,但是我希望有一种方法可以告诉Elasticsearch处理在查询本身中。
最佳答案
您可以使用过滤的构面来执行此操作:
curl -XGET "http://localhost:9200/_search" -d'
{
"query": {
"match_all": {}
},
"facets": {
"my_docs": {
"filter": {
"term": { "user_id": "my_user_id" }
}
},
"others_docs": {
"filter": {
"not": {
"term": { "user_id": "my_user_id" }
}
}
}
}
}'
这样做的好处之一是两个
terms
过滤器是相同的,因此只执行一次。 not
过滤器只是反转缓存的term
过滤器的结果。