我使用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方案,即基于非整数。