使用多个过滤器和在单个“and”子句中指定多个过滤器之间的区别

时间:2015-10-22 19:25:43

标签: elasticsearch filter

我是elasticsearch的新手,不知道两个查询之间有什么区别。它只是处理时间还是根本不同的查询。

1) filters : { and: [{
  "bool" : {
    "should" : {
      "term" : {
        "Code" : "1510"
      }
    }
  }
}
,
{
  "bool" : {
    "should" : {
      "term" : {
        "Id" : "Id3"
      }
    }
  }
}] }


2) filter: [{
  "bool" : {
    "must" : [{
      "term" : {
        "Code" : "1510"
      },
     "term":{
       "Id":"Id3"}]
     }
   }
 }]

1 个答案:

答案 0 :(得分:0)

OP中的查询在逻辑上是等效的。

然而,据说我发现2)具有直观性,可读性和简单性。

通常,出于性能原因, bool 过滤器优先于 and ,但对于有问题的查询,我怀疑这种差异是否可察觉。

对于 and 过滤器,1)中的查询更好地编写如下:

    "filter": {
      "and": [
         {
            "term": {
               "Code": "1510"
            }
         },
         {
            "term": {
               "Id": "Id3"
            }
         }
      ]
   }