Comment obtenir l'ID d'incrémentation automatique pour elasticsearch
J'ai besoin de stocker l'unique auto incrément id avec le reste des champs dans mon document dans ElasticSearch. Est-il de toute façon dans ElasticSearch pour les obtenir.
J'ai trouvé cela comme une solution potentielle: http://blogs.perl.org/users/clinton_gormley/2011/10/elasticsearchsequence---a-blazing-fast-ticket-server.html
Mais je me demande est-il un meilleur moyen?
source d'informationauteur KDAO | 2014-03-18
Vous devez vous connecter pour publier un commentaire.
Le 1.x document de référence de l'API dit que l'on peut laisser de côté un id et il sera généré automatiquement. Utiliser POST au lieu de le mettre et de le op_type sera automatiquement mis à créer.
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-index_.html#_automatic_id_generation
Voici une autre façon d'utiliser elasticsearch pour créer
iids
:Le principal avantage est que le
iid
peuvent être sauvegardés avec de simples décharges d'où une mise en œuvre à l'aide de la_version
d'elasticsearch est pas en mesure de sauvegarder la version.Il permet de demander une majeure partie des iid afin de minimiser le nombre de requêtes nécessaires.
Une demande pour obtenir une masse de 10
iids
devrait ressembler à ceci:Il a besoin de cet (optimisé) pour la cartographie de l'indice:
Une description plus détaillée peut être trouvée ici:
Comme d'Elasticsearch v1.1.0 il n'y a pas de support natif pour l'auto-incrémentation d'id pour autant que je sais. Aussi la la documentation officielle ne mentionne pas toutes les fonctionnalité de ce genre.
Le billet de blog que vous mentionnez prend une approche possible. Il a l'avantage de la persistance de la dernière id qui a été utilisé dans Elasticsearch. Par rapport, par exemple de stocker un auto-incrémenté de la valeur dans le Redis, ou de toute autre source de données externe, vous n'avez pas à vous soucier d'une panne du système de production. Ensuite, il n'y a pas deux sources de données qui peuvent être désynchronisés.
BTW, j'ai mis en place un node.js module basée sur cette approche.
Selon ce que vous voulez exactement à atteindre, cela pourrait être une option - il est toujours dans les tout premiers stades de développement: https://github.com/elastic/elasticsearch/issues/10708