Размер индекса Elasticsearch

У меня есть быстрый вопрос в эластичном поиске. У меня есть HTML-файл, и я просто хотел сохранить его в своем индексе с другими полями.

Я создал два разных индекса, как показано ниже,

option1: иметь поле в двоичном формате и преобразовать html в base64 (myindex1-имя индекса, Html-поле сжимается и значение base64)

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

используя приведенный выше код, я сжимаю и кодирую в base64 перед загрузкой в myindex1.

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

Oprion 2: имейте html как оно в поле строки (myindex2 имя индекса, поле Html простая строка как оно)

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

Эксперимент:
1) я собирал образцы данных 10K
2) сжал и преобразовал файл «Html» в base64 и загрузил в индекс ES (myindex1)
3) загруженные же образцы данных 10k, как это в myindex2.

Теоретически размер сжатых данных должен быть небольшим. поэтому я предположил, что размер myindex1 должен быть меньше, чем myindex2.

Но когда я проверил это,

  • myindex1 — > 228,3 mb
  • myindex2 — > 222.3 mb

Как мы видим выше, размер myindex2 (без сжатия) меньше.

Почему размер myindex2 меньше, чем myindex1?

1 ответ

  1. Base64-это не алгоритм сжатия, а алгоритм кодирования.

    Размер закодированных в Base64 данных примерно в 1,37 раза больше, чем незашифрованных данных, поэтому то, что вы наблюдаете, совершенно нормально.

    Основная цель Base64-кодирование двоичных данных в формат ASCII. Если вы ищете алгоритм сжатия, у вас есть несколько вариантов, таких как ZIP, LZF и т. д