2014-11-04 73 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 
       }, 
      } 
     } 
    } 
] 
相關問題