将多个属性与elasticsearch匹配

时间:2015-08-31 03:19:48

标签: elasticsearch

所以我有一堆像{A: x, B: y}这样的记录。

我想构建一个与AB attrib匹配的搜索查询。

但是,在match中再添加一个条件,查询将无法解析。

这很有效。

{
   "query" : {
       "match": {
           "A": "x"
       }
   }
}

这不是。

{
   "query" : {
       "match": {
           "A": "x",
           "B": "y"
       }
   }
}

2 个答案:

答案 0 :(得分:2)

应该是这样的:

{
  "query": {
   "bool": {
      "must": [
          {
             "match": {"A": "x"}
          },
          {
             "match": {"B": "y"}
          }
       ]
    }
   }
 }

使用mustAND所有匹配条款,使用shouldOR所有匹配条款。

答案 1 :(得分:0)

使用术语查询,试试这个:

{
   "query": {
       "bool": {
          "should": [
              {
                "term": {"A": "x"}
              },
              {
                "term": {"B": "y"}
              }
          ]
       }
   }
}

或匹配查询可以执行此操作:

{
   "query": {
       "bool": {
          "should": [
              {
                 "match": {"A": "x"}
              },
              {
                 "match": {"B": "y"}
              }
           ]
        }
     }
 }