【问题标题】:Elasticsearch multi index query with geo bounding box query带有地理边界框查询的 Elasticsearch 多索引查询
【发布时间】:2016-12-28 00:07:12
【问题描述】:

Elasticsearch 使您能够查询这些索引上存在或不存在的字段的多个索引。

但是,当使用 geo_bounding_box 弹性查询多个索引时,如果查询的字段不存在于所有请求的索引中,则会引发异常。

似乎弹性检查所需字段是否映射为地理点。

有没有办法在不编辑映射并在所有索引中添加所有 geo_fileds 的情况下实现此查询?

【问题讨论】:

  • 可能只在您的搜索中包含包含地理字段的索引。
  • 问题是所有索引都包含地理字段但名称不同。例如索引 A.x_location、索引 B.y_location 和使用 bool 查询的查询,两个字段都应使用。

标签: elasticsearch


【解决方案1】:

您可以在bool/should 排列中使用indices query,如下所示。这样您就不会冒使用错误字段名称查询索引的风险:

POST /indexA,indexB/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "indices": {
            "indices": [
              "indexA"
            ],
            "query": {
              "geo_bounding_box": {
                "x_location": {...}              }
            }
          }
        },
        {
          "indices": {
            "indices": [
              "indexB"
            ],
            "query": {
              "geo_bounding_box": {
                "y_location": {...}
              }
            }
          }
        }
      ]
    }
  }
}

【讨论】:

  • 感谢您的回答。它似乎有效,但现在我有奇怪的结果,使用应该返回两个索引中的所有文档,将其更改为必须返回正确的文档,为什么多索引查询上的布尔查询存在差异?
猜你喜欢
  • 1970-01-01
  • 2016-09-12
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 2022-10-14
  • 2018-01-02
  • 2014-05-30
相关资源
最近更新 更多