2015-09-01 14 views
7

Od konfiguracji path na polu _id konkretnego odwzorowania jest przestarzała (jak wskazano w dokumentacji here)Jak ustawić _id w elasticsearch 2,0

Jak mogę ustawić pole _id dla konkretnego dokumentu elasticsearch 2.0?

(W moim konkretnym przypadku użytkowej, chcę indeksu wszystkie dokumenty na własne id. Wiem, że wszyscy są unikalne)

Odpowiedz

16

_id wycofywana po prostu oznacza, że ​​trzeba podać identyfikator jednoznacznie i ES nie zaoferuje ci parsowania twojego dokumentu po raz pierwszy tylko po to, aby pobrać pole, które podałeś jako pole identyfikatora.

Tak więc wszystkie obecne sposoby indeksowania dokumentów są nadal ważne tak długo, jak można określić identyfikator jednoznacznie:

curl -XPUT localhost:9200/index/type/your_id -d '{"field1": "value1"}' 
             ^
             | 
           your id goes here 

lub w zapytaniu luzem

curl -XPOST localhost:9200/_bulk -d ' 
{"index": {"_index": "index", "_type": "type", "_id": "your_id"}} 
{"field1": "value1"}         ^
'              | 
               your id goes here 
+1

Damn! To takie trywialne, nie wiem, dlaczego nie myślałem o próbowaniu tego. :/(I nadal uważam, że powinni o tym wspomnieć w swojej dokumentacji) – gillyb

+0

Jest to jakoś krótko wspomniane w tym [wpisie na blogu] (https://www.elastic.co/blog/great-mapping-refactoring) ogłaszającym zbliżające się zmiany w ES 2.0. Chociaż przyznaję, że nie zaszkodzi, jeśli dokument wspomina o tym "oficjalnie". – Val

+0

Jest to udokumentowane [za pomocą interfejsu API indeksu] (https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html), co jest pierwszą rzeczą. "Poniższy przykład wstawia dokument JSON do indeksu" twitter ", pod nazwą" tweet "o identyfikatorze 1" Dopiero później na stronie jest metoda automatycznego generowania identyfikatora za pomocą HTTP Wprowadzono POST. EDYCJA: ograniczone wsparcie ze zniżkami w komentarzach. – GlenRSmith