使用bool内的OR运算符进行弹性搜索查询

时间:2016-02-08 14:44:43

标签: elasticsearch

我需要构建一个简单的查询,将其转换为条件 “年龄”在40-60之间,“国家”在美国或IN。我正在使用bool运算符搜索解决方案。

我尝试使用以下选项:

    "bool": {
        "must": [
           {
               "range": {
                  "age": {
                     "from": 40,
                     "to": 60
                  }
               }
           },
           {
               "terms": {
                  "country": [
                     "US",
                     "IN"
                  ]
               }
            }
        ]
    }

但是这个查询并没有给我任何结果。我在这里错过了什么吗?

谢谢! ķ

1 个答案:

答案 0 :(得分:1)

您的查询看起来很好。我认为你的查询不起作用的唯一原因是" coutry"字段使用默认分析器,其中术语是低级的并存储在索引中。如果你得到以下查询的预期结果,我的怀疑是正确的。要解决此问题,您可以将查询更改为我在下面提到的查询,也可以更改您的映射以使字段“#34; country"非分析

"bool": {
    "must": [
       {
           "range": {
              "age": {
                 "from": 40,
                 "to": 60
              }
           }
       },
       {
           "terms": {
              "country": [
                 "us",    <---- Note that I'm using lower-cased terms
                 "in"     <---- Note that I'm using lower-cased terms
              ]
           }
        }
    ]
}