首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性搜索每插入一张单据自动递增一个字段值

问弹性搜索每插入一张单据自动递增一个字段值
EN

Stack Overflow用户
提问于 2018-03-17 17:00:01
回答 2查看 1.4K关注 0票数 1

我需要生成此格式的唯一编号(ARN)

代码语言:javascript
复制
DD/MM/YYYY/1, DD/MM/YYYY/2

并将这些插入到弹性搜索索引中。

我正在考虑的方法是在文档中创建一个自动增量字段,并使用它来生成一个新的条目,并使用新的自动生成的编号来创建ARN和更新文档。

我计划使用的文档结构:

代码语言:javascript
复制
{ id: 1, arn: 17/03/2018/01 }

就像这样。

如何在弹性搜索中获取自动增量字段?

EN

回答 2

Stack Overflow用户

发布于 2018-03-17 17:16:28

这不可能一步到位。首先,您必须将记录插入到数据库中,然后使用其id更新ARN

票数 0
EN

Stack Overflow用户

发布于 2018-03-17 20:25:56

例如,没有等同于hibernate id生成器的自动递增。您可以使用Bulk API (如果您必须一次保存多个文档),并以编程方式增加_id和ARN值的结尾。

注意:如果你想把你的id当作一个number__,你应该自己实现它(在这个例子中,我添加了一个新的字段"my_id",因为文档的_id被当作一个字符串。

代码语言:javascript
复制
POST /bulk
{ "index" : { "_index" : "your_index", "_type" : "your_type", "_id" : "1" } }
{ "arn" : "2018/03/17/1", my_id: 1 }
{ "index" : { "_index" : "your_index", "_type" : "your_type", "_id" : "2" } }
{ "arn" : "2018/03/17/2", my_id: 2 }

然后,下一次要保存新文档时,可以查询最大id,如下所示:

代码语言:javascript
复制
POST /my_index/my_type/_search?size=1
{
  "query": {
       "fields": ["my_id"],
        "sort": [{
           "my_id": { "order": "desc" } }
        ]
   }
}

如果你唯一的要求是这个ARN必须是唯一的,你也可以让elasticsearch通过不设置它来计算你的_id。然后,您可以在某个唯一的令牌生成器(如果使用java,则为UID.randomUUID().toString())处进行中继。伪代码如下:

代码语言:javascript
复制
String uuid = generateUUID() // depends on the programming language 
String payload = "{ \"arn\" : + uuid + "}" // concatenate the payload
String url = "http://localhost:9200/my_index" // your target index

executePost(url, payload) // implement the call with some http client library
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49334253

复制
相关文章

相似问题

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