查询多个索引时如何处理“未知字段”?

时间:2019-06-26 21:26:58

标签: elasticsearch elasticsearch-5

尝试跨多个索引查询时出现以下错误:

{
    "type": "parsing_exception",
    "reason": "unknown field [locations.addresses.lat_lon]",
    "line": 1,
    "col": 0
}

这很有意义,因为我的索引之一不包含该属性。如何将一个字段用于一个索引,将另一个字段用于另一个索引?

当前,我的查询是功能得分查询,该功能似乎不支持其他查询所拥有的ignore_mapping选项(在创建得分的函数中使用此字段)。我还将它作为“地理距离查询”的一部分,该查询确实支持ignore_mapping选项,并且该部分正在运行。

示例查询:

{

  "min_score": 0.1,
  "query": {
    "function_score": {
      "score_mode": "multiply",
      "query": {
        "bool": {
          "filter": [],
          "minimum_should_match": 1,
          "should": [
            {
              "bool": {
                "minimum_should_match": 1,
                "filter": [
                  {
                    "term": {
                      "_index": {
                        "value": "network_connections"
                      }
                    }
                  },
                  {
                    "nested": {
                      "path": "locations",
                      "ignore_unmapped": true,
                      "query": {
                        "geo_distance": {
                          "distance": "25mi",
                          "locations.addresses.lat_lon": {
                            "lat": 30.432242,
                            "lon": -97.7145152
                          }
                        }
                      }
                    }
                  }
                ],
                "should": {
                  "dis_max": {
                    "queries": [
                      {
                        "common": {
                          "name": {
                            "query": "test",
                            "cutoff_frequency": 0.01,
                            "boost": 2
                          }
                        }
                      }
                    ]
                  }
                }
              }
            }
          ]
        }
      },
      "functions": [
        {
          "gauss": {
            "locations.addresses.lat_lon": {
              "origin": {
                "lat": 30.432242,
                "lon": -97.7145152
              },
              "offset": "5mi",
              "scale": "12.5mi"
            }
          }
        }
      ]
    }
  }
}

我正在执行额外的geo_distance查询,以在基于距离的搜索中设置硬边界(我曾尝试仅修改min_score和gauss函数,但无法使其用作硬边界)。 / p>

我的主要问题是在跨多个索引搜索时如何避免出现unknown field错误

0 个答案:

没有答案