2017-12-26 31 views
1

In Elasticsearch ist es besser, 50 Felder in 1.000.000 Dokumenten oder 1 Feld in 50.000.000 Dokumenten abzufragen. Ich werde mein Problem mit einem Beispiel erklären:Elasticsearch Dokumentstruktur zur Leistungsoptimierung

Für den Fall 1, unsere doc wie folgt aussieht:

doc1: { 
    "f1": "abc", 
    "f2": "pqr", 
    "f3": "lmn", 
    ... 
    "f50": "xyz" 
} 

hier ein sollte von „f1“ bis „F50“ durchgeführt werden abfragt.

Für Fall 2 wird unsere doc wie folgt aussehen:

doc1.1: { 
    "f": "abc" 
} 

doc1.2: { 
    "f": "pqr" 
}  

doc1.3: { 
    "f": "lmn" 
} 
... 
... 
doc1.50: { 
    "f": "xyz" 
} 

Sagen wir einfach, ich bin besorgt über die docs den abgefragten Wert unabhängig von dem Feld enthält.

+0

Es gibt so viele Unbekannte (Anzahl der Shards, Anzahl der Knoten, ist es ein Cache-Filter, ...), dass ich glaube nicht, dass Sie eine autoritative Antwort bekommen können. IMO, das sollte klein genug sein, dass es keinen großen Unterschied macht, und du überdenkst es. Baue es einfach und wenn es explodiert/langsam wird, denke über das Refactoring nach. Wenn Sie nur wenige GB Daten haben und reguläre Abfragen verwenden, sollte dies nicht notwendig sein. – xeraa

Antwort

0

Ich würde die 50 Millionen Dokumente Ansatz nehmen. ElasticSearch kann diese Größe problemlos mit geeigneter Hardware (Selbsterfahrung) bewältigen, und es wird viel einfacher für Abfragen und Datenmanipulation sein.

+1

Können Sie bitte erklären, warum es einfacher ist, Fragen zu stellen? – demas

+1

Ich denke durch leicht er bedeutet, dass wir eine Abfrage/Zuordnung nur für ein Feld statt 50 Felder schreiben müssen. –