基于过滤结果的弹性搜索过滤

时间:2018-06-01 09:13:28

标签: elasticsearch kibana

是否可以根据其他过滤器的结果过滤文档?

例如,如果我在

上过滤文件
"_source": [ "animalName" ],
{ "term":  { "animalType": "dog" }}

如何过滤选择所有具有狗名称的动物?

1 个答案:

答案 0 :(得分:0)

假设您希望所有类型为dog的动物名为 $ someName ,请尝试以下操作:

{
  "_source: ["animalName", "animalWeight", ...],
  "query": {
    "bool": {
      "filter": [{
        "term": {"animalType": "dog"}
      },{
        "term": {"animalName": $someName}
      }]
    }
  }
}

<强> [UDATE]
你的意思是这样的吗?

select distinct a2.*
from animals a1
  join animals a2 on a1.name = a2.name
where 1
  and a1.type = 'dog'
  and a2.type != 'dog'

我不知道如何以弹性的方式实现这一目标,因为SQL式连接&#39;是非常昂贵的&#39; [1]