我使用elasticsearch插入來自不同客戶端應用程序的文檔。我有不同的客戶端插入,所以我不能只在本地存儲下一個ID ...我需要查找彈性搜索的下一個預期的ID。我正在使用基於整數的ID生成方案,例如在網站上的許多「twitter」示例中完成的。我的問題是如何最好地查找最後的ID? ID被存儲爲一個字符串,因此運行的排序操作無法正常工作,如:Elasticsearch數字標識生成
curl -XGET 'http://localhost:4040/search/geolocations/geos/_search' -d '{
"sort": [
{
"_id": {
"order": "asc"
}
}
],
"query": {
"match_all": {}
}
}'
對於上面的,如果你有1,2,10,11,存儲:其結果將具有「2」是最高...這可能是正確的字符串,但不是一個整數。
我想堅持一個整數ID在這裏,而不是切換到傳統的字符串UUID。
我一直在使用考慮: http://www.elasticsearch.org/guide/reference/query-dsl/script-filter/
運行一個腳本,將投ID字符串爲整數......但也似乎是一個不錯的辦法,並不清楚如何將與工作相結合JSON和MVEL語法。
與製造企圖:
curl -XGET 'http://localhost:4040/search/geolocations/geos/_search' -d '{
"sort": {
"_script": {
"script": "doc['_id'].value",
"type": "number",
"order": "asc"
}
},
"query": {
"match_all": {}
}
}'
但意識到它不解析。
另一個說明,我希望增加新的記錄是一個相當罕見的操作,所以這裏的性能並不那麼關鍵。我寧願選擇昂貴的查詢操作,而不是重新將輪換切換到不同的id方案,即基於非整數。