首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch数字Id生成

Elasticsearch数字Id生成
EN

Stack Overflow用户
提问于 2013-04-27 04:36:10
回答 1查看 1.4K关注 0票数 0

我正在使用elasticsearch插入来自不同客户端应用程序的文档。我有不同的客户端进行插入,所以我不能只在本地存储下一个id…我需要在elasticsearch中查找下一个预期的id。我正在使用一个基于整数的ID生成方案,例如在网站上的许多"twitter“示例中所做的。我的问题是如何最好地查找最后的id?id被存储为字符串,因此运行排序操作不起作用,例如:

代码语言:javascript
复制
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语法一起工作。

尝试执行以下操作:

代码语言:javascript
复制
curl -XGET 'http://localhost:4040/search/geolocations/geos/_search' -d '{
  "sort": {
    "_script": {
      "script": "doc['_id'].value",
      "type": "number",
      "order": "asc"
    }
  },
  "query": {
    "match_all": {}
  }
}'

但要意识到它不能解析。

另请注意,我预计添加新记录是一个相当不频繁的操作,因此这里的性能不是那么关键。我宁可在这里使用昂贵的查询操作,也不愿重新发明轮子将所有东西切换到不同的id方案,即基于非整数的方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-27 09:21:48

我可以使用:"from":0,"size" : 5,"query" : {"match_all" : {}}

在忽略id的情况下输入查询,以获得我想要的行为。对于我来说,即使没有显式定义标识记录0-4的"id“,api也不清楚您是否会得到相同的0-4记录。实际上,我现在只是使用字符串UUID进行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16244805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档