Der Trend ist, doc_values
wann immer möglich zu verwenden, da sie immer leistungsfähiger werden als Felddaten (besonders seit ES 1.4). Einer der Nachteile ist, dass Sie sie nicht mit analysierten String-Feldern und booleschen Feldern verwenden können. Ein weiterer Nachteil ist, wenn Sie immer noch Facetten verwenden. Kibana 3, da beide nicht Doc-Werte nutzen, sondern Sie entweder zu Aggregationen migrieren können. Upgrade auf Kibana 4, es ist also kein Problem.
Sehen Sie sich diesen exzellenten Blogbeitrag von Chris Earle, der die Details von doc values vs fielddata erklärt.
Aus Elasticsearch Der endgültige Leitfaden [1.x]
%Vor%Doc-Werte sind jetzt nur etwa 10-25% langsamer als In-Memory-Felddaten, und kommen mit zwei großen Vorteilen:
Sie leben auf Festplatte statt im Heapspeicher. Dadurch können Sie mit Felddatenmengen arbeiten, die normalerweise zu groß wären in die Erinnerung passen. Tatsächlich kann Ihr Heap-Space ($ ES_HEAP_SIZE) jetzt sein auf eine kleinere Größe gesetzt, was die Geschwindigkeit der Speicherbereinigung verbessert und folglich Knotenstabilität. Doc-Werte werden zur Indexzeit und nicht zur Suchzeit erstellt. In-Memory-Felddaten müssen während der Suchzeit on-the-fly erstellt werden Um den invertierten Index nicht zu invertieren, sind doc-Werte bereits vorgefertigt und viel schneller zu initialisieren.
Der Kompromiss besteht in einer größeren Indexgröße und etwas langsameren Felddaten Zugriff. Doc-Werte sind bemerkenswert effizient, also für viele Anfragen könnte die etwas langsamere Geschwindigkeit nicht einmal bemerken. Kombiniere das mit schnellere Garbage Collections und verbesserte Initialisierungszeiten und Sie kann einen Nettogewinn bemerken.
Je mehr Dateisystem-Cache-Speicher zur Verfügung steht, desto besser Doc-Werte werden ausgeführt. Wenn die Dateien, die die Doc-Werte enthalten, sind resident im Dateisystem-Cache, dann ist fast der Zugriff auf die Dateien entspricht dem Lesen aus dem RAM. Und der Dateisystemcache wird von verwaltet der Kernel anstelle der JVM.
Doc-Werte können für numerisch, Datum, Boolesch, binär und aktiviert werden Geo-Point-Felder und für nicht analysierte String-Felder. Sie nicht arbeiten derzeit mit analysierten Stringfeldern. Doc-Werte werden per aktiviert Feld im Feld Mapping, was bedeutet, dass Sie In-Memory kombinieren können Felddaten mit Doc-Werten:
Wir verwenden doc_values mit booleschen Werten, aber Sie können sie nicht mit analysierten Feldern verwenden. Sie sprechen darüber, wissen aber nicht, wie die richtige Datenstruktur aussehen sollte. Siehe Support für Doc-Werte für analysierte Felder hinzufügen .
Tags und Links elasticsearch