2016-11-02 2 views
0

Ich habe eine kurze Frage in der elastischen Suche. Ich habe HTML-Datei und ich wollte es nur in meinem Index mit anderen Feldern speichern.Elasticsearch Index Größe

I wie unten zwei verschiedenen Index erstellt haben,

option1: das Feld als binäres haben und wandeln die HTML Base64 (myindex1 ist der Indexname wird HTML-Feld compresed und Base64-Wert)

HTML = (zlib.compress(Html.encode('utf-8'),9)).encode('base64') 

mit dem obigen Code Ich komprimiere und Codierung zu base64 vor dem Laden in myindex1.

"Html": { 
     "type": "binary", 
     "index": "no", 
     "include_in_all": false, 
     doc_values : false, 
     store : true, 
}, 

Oprion 2: haben die html, wie es in Zeichenketten-Feld ist (myindex2 ist der Indexname, HTML-Feld ist klar Zeichenfolge, wie sie ist)

"Html": { 
      "type": "string", 
      "index": "no", 
      "include_in_all": false, 
      doc_values : false, 
      store : true, 
    }, 

Experiment: 1) i haben 10K Datenproben gesammelt 2) compresed und konvertiert das Feld "Html" zu base64 und geladen in ES-Index (myindex1) 3) geladen gleichen 10k Datenproben, wie es in myindex2 ist.

Theoretisch sollte die Größe der komprimierten Daten klein sein. Also meine Annahme war, dass die Größe von myindex1 kleiner als myindex2 sein sollte. Aber

wenn ich verifed es,

  • myindex1 -> 228.3mb
  • myindex2 -> 222.3mb

Wie wir oben die Größe des myindex2 (ohne Kompression) sehen ist kleiner.

Warum ist die Größe von myindex2 kleiner als myindex1?

Antwort

0

Base64 ist kein Komprimierungsalgorithmus, sondern ein Codierungsalgorithmus.

Die Größe der Base64-kodierten Daten ist ungefähr 1,37 mal größer als die der nicht kodierten Daten, was Sie beobachten, ist völlig normal.

Das Hauptziel von Base64 ist, binäre Daten in ASCII-Format zu kodieren. Wenn Sie nach einem Komprimierungsalgorithmus suchen, haben Sie eine few choices, wie z. B. PLZ, LZF usw.

+0

Vielen Dank für die Antwort. Was ich mit Komprimierung meinte, ist dies: Html = (zlib.compress (Html.encode ('utf-8'), 9)). Encode ('base64'). Ich bin tatsächlich komprimieren Sie die Zeichenfolge mit Zlib in Python dann konvertieren Sie es in Base64 – Backtrack

+0

Meine Frage aktualisiert. Ich benutze Zlib, um HTML in Option1 zu komprimieren. – Backtrack

+0

Der zlib Teil war eine ziemlich wichtige Information ;-) – Val

Verwandte Themen