在Elasticsearch距离脚本中访问嵌套属性

问题描述

如我的评论中所述,当您按_geo_distance排序时,返回的“ _sort”字段是实际距离。因此,无需进行单独的计算。此处的详细信息:http : //elasticsearch-users.115913.n3.nabble.com/search- by-distance-and-getting-the-actual-distance- td3317140.html#a3936224

解决方法

我在elasticsearch中的索引具有以下映射:

"couchbaseDocument": {
      "properties": {
         "doc": {
            "properties": {
               "properties": {
                  "properties": {
                     "location": {
                        "type": "geo_point"

源文档如下:

{"properties" : {"location":"43.706596,-79.4030464"}}

我正在尝试使用距离脚本来基于地理点计算距离。我在elasticsearch结果中发现了该帖子的Return
distance吗?帮我 我正在尝试获取所有结果,按半径1km进行过滤,获取距离,然后对geo_point进行排序。查询的结构如下:

{
    "query": {
        "match_all": {}
    },"filter": {
        "geo_distance": {
           "distance": "1km","doc.properties.location": {
              "lat": 43.710323,"lon": -79.395284
           }
        }
    },"script_fields": {
       "distancePLANE": {
            "params": {
               "lat": 43.710323,"lon": -79.395284
           },"script": "doc[properties]['location'].distanceInKm(lat,lon)"
       },"distanceARC" :{
           "params": {
               "lat": 43.710323,"script": "doc[properties]['location'].arcDistanceInKm(lat,lon)"
       }
    },"sort": [
       {
           "_geo_distance":{
               "doc.properties.location": [-79.395284,43.710323],"order": "desc","unit": "km"
           }
       }
    ],"track_scores": true
}

我收到状态为500的以下错误:

"PropertyAccessException[[Error: could not access: properties; in class: org.elasticsearch.search.lookup.DocLookup]\n[Near : {... doc[properties]['location'].distan ....}]\n                 ^\n[Line: 1,Column: 5]]"

我尝试以这种方式重写查询:

..."script": "doc['properties']['location'].arcDistanceInKm(lat,lon)"...

然后我得到这个错误:

"CompileException[[Error: No field found for [properties] in mapping with types [couchbaseDocument]]\n[Near : {... doc['properties']['location']. ....}]\n             ^\n[Line: 1,Column: 1]]; nested: ElasticSearchIllegalArgumentException[No field found for [properties] in mapping with types [couchbaseDocument]]; "

当我从查询中一起删除脚本部分时,排序和过滤工作正常。使用脚本时是否有其他方法来访问嵌套字段?任何见解将不胜感激!

谢谢!

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...