2014-11-04 26 views
1

我想将一个脚本字段附加到elasticsearch结果中。但我找不到工作解决方案。如何将脚本字段附加到结果?

我有一个脚本场这样的:

{ 
    "script_fields": { 
    "distance": { 
     "script": "doc[my_field_name].arcDistance(my_lat, my_lon)", 
     "params": { 
     "my_field_name": "geopoint", 
     "my_lat": 52.5, 
     "my_lon": 13.4 
     } 
    } 
    } 
} 

至于结果我得到类似的东西:

"hits": [ 
    { 
     "fields": { 
      "distance": [ 
       0 
      ] 
     } 
    }, 
    { 
     "fields": { 
      "distance": [ 
       500 
      ] 
     } 
    }, 
    { 
     "fields": { 
      "distance": [ 
       1000 
      ] 
     } 
    } 
] 

但我需要充分的文件与脚本领域在一起。所以,我已经试过这样:

{ 
    "script_fields": { 
    "distance": { 
     "script": "doc[my_field_name].arcDistance(my_lat, my_lon)", 
     "params": { 
     "my_field_name": "geopoint", 
     "my_lat": 52.5, 
     "my_lon": 13.4 
     } 
    }, 
    "source": { 
     "script": "_source" 
    } 
    } 
} 

但作为结果,我得到这样的:

"hits": [ 
    { 
     "fields": { 
      "distance": [ 
       0 
      ], 
      "source": [ 
       { 
        "id": "101", 
        "geopoint": { 
         "lon": 52.5, 
         "lat": 13.4 
        }, 
       } 
      ] 
     } 
    }, 
    { 
     "fields": { 
      "distance": [ 
       500 
      ], 
      "source": [ 
       { 
        "id": "101", 
        "geopoint": { 
         "lon": 52.5, 
         "lat": 13.4 
        }, 
       } 
      ] 
     } 
    }, 
    { 
     "fields": { 
      "distance": [ 
       1000 
      ], 
      "source": [ 
       { 
        "id": "101", 
        "geopoint": { 
         "lon": 52.5, 
         "lat": 13.4 
        }, 
       } 
      ] 
     } 
    } 
] 

来源是在这种情况下,对所有命中的相同。我以为每个文档都要加载_source,但看起来并不如此。

我怎样才能实现脚本领域与文件作为结果或不可能?

回答

0

我在错误的轨道上。该解决方案是改变请求:

{ 
    "fields": [ 
    "_source" 
    ], 
    "script_fields": { 
    "distance": { 
     "script": "doc[my_field_name].arcDistance(my_lat, my_lon)", 
     "params": { 
     "my_field_name": "geopoint", 
     "my_lat": 52.5, 
     "my_lon": 13.4 
     } 
    } 
    } 
} 

结果看起来比是这样的:

"hits": [ 
    { 
     "fields": { 
      "distance": [ 
       0 
      ], 
     }, 
     "_source": { 
      { 
       "id": "101", 
       "geopoint": { 
        "lat": 52.5, 
        "lon": 13.4 
       }, 
      } 
     } 
    }, 
    { 
     "fields": { 
      "distance": [ 
       500 
      ], 
     }, 
     "_source": { 
      { 
       "id": "102", 
       "geopoint": { 
        "lat": 52.5, 
        "lon": 13.40739378 
       }, 
      } 
     } 
    }, 
    { 
     "fields": { 
      "distance": [ 
       1000 
      ], 
     }, 
     "_source": { 
      { 
       "id": "103", 
       "geopoint": { 
        "lat": 52.5, 
        "lon": 13.4147875 
       }, 
      } 
     } 
    } 
] 
相关问题