结合弹性搜索查询

时间:2015-08-08 19:08:06

标签: elasticsearch

我有以下两个问题:

GET places/_search
{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "should": [
            {
              "term": {
                "approved": false
              }
            }
          ]
        }
      }
    }
  }
}

GET places/_search
{
  "query": {
    "filtered": {
      "filter": {
        "geo_bounding_box": {
          "loc": {
            "top_left": "54.6152065515344, -6.09334913041994",
            "bottom_right": "54.5754258987271, -5.76633420732423"
          }
        }
      }
    }
  }
}

两者都运行正常,但是我遇到了组合查询的问题,并且想知道是否有人可以提供帮助。基本上我想在指定的边界框内重新调整所有项目,其中"已批准"财产是假的。

1 个答案:

答案 0 :(得分:1)

您可以保留filtered查询并在bool/must过滤器中将这两个条件简单地合并到内部

curl -XPOST localhost:9200/places/_search -d '{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "approved": false
              }
            },
            {
              "geo_bounding_box": {
                "loc": {
                  "top_left": "54.6152065515344, -6.09334913041994",
                  "bottom_right": "54.5754258987271, -5.76633420732423"
                }
              }
            }
          ]
        }
      }
    }
  }
}'