我需要将唯一的自动增量ID与我在ElasticSearch中的文档中的其余字段一起存储.无论如何在ElasticSearch中都可以获得它们.
我发现这是一个潜在的解决方案:http://blogs.perl.org/users/clinton_gormley/2011/10/elasticsearchsequence---a-blazing-fast-ticket-server.html
但我只是想知道有没有更好的方法?
1.x参考文档API表示您可以不使用ID,它将自动生成.使用POST而不是put,op_type将自动设置为create.
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-index_.html#_automatic_id_generation
这是使用elasticsearch创建的另一种方法iids
:
主要优点是iid
可以使用简单转储进行备份,其中使用_version
elasticsearch 的实现无法备份版本.
它允许请求大量iid以最小化所需的请求数.
获得大量10的请求iids
将如下所示:
curl -XPOST "http://localhost:9200/sequence/sequence/1/_updatefields=iid&retry_on_conflict=5" -d '{ "script": "ctx._source.iid += bulk_size", "params": { "bulk_size": 10 }, "lang": "groovy", "upsert": { "iid": 0 } }'
它需要索引的这个(优化的)映射:
curl -XPOST http://localhost:9200/sequence/_mapping -d '{ "settings": { "number_of_shards": 1, "auto_expand_replicas": "0-all" }, "mappings": { "sequence": { "_all": { "enabled": 0 }, "_type": { "index": "no" }, "dynamic": "strict", "properties": { "iid": { "type": "string", "index": "no" } } } } }'
可以在此处找到更详细的描述: