2015-09-01 14 views
7

Da die Konfiguration von path auf das _id Feld einer bestimmten Zuordnung setzen ist veraltet (wie in der Dokumentation festgestellt here),Wie _id in Elasticsearch 2.0

Wie kann ich das _id Feld für ein bestimmtes Dokument in elasticsearch 2.0?

(In meinem speziellen Anwendungsfall, ich will alle Dokumente mit meiner eigenen ID zu indizieren. Ich weiß, dass sie alle einzigartig sind)

Antwort

16

_id einfach ist veraltet bedeutet, dass Sie die ID explizit und ES angeben müssen bietet Ihnen nicht an, Ihr Dokument ein erstes Mal zu analysieren, nur um das Feld, das Sie als das ID-Feld angegeben haben, abzurufen.

So werden alle aktuellen Möglichkeiten Ihrer Dokumente indexiert sind, so lange noch gültig, wie Sie die ID explizit angeben:

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

oder in einer Bulk-Abfrage

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

Damn! Das ist so trivial, ich weiß nicht, warum ich nicht daran gedacht habe, das zu versuchen. :/(Und ich denke immer noch, dass sie es in ihrer Dokumentation erwähnen sollten) – gillyb

+0

Es ist irgendwie kurz erwähnt in diesem [Blogpost] (https://www.elastic.co/blog/great-mapping-refactoring) ankündigende bevorstehende Änderungen in ES 2.0. Ich gebe zu, es würde nicht schaden, wenn der Arzt es "offiziell" erwähnt. – Val

+0

Es ist dokumentiert [mit dem Index API] (https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html), die allererste Sache. "Das folgende Beispiel fügt das JSON-Dokument in den" twitter "-Index unter einem Typ namens" Tweet "mit einer ID von 1" Nur später auf der Seite ist die Methode der automatischen Generierung der ID mit einem HTTP POST eingeführt. EDIT: begrenzte Abschriftenunterstützung in den Kommentaren. – GlenRSmith

Verwandte Themen