blog-post

Manticore: более быстрый альтернативный вариант Elasticsearch на C++ с 21-летней историей

Пять лет назад Manticore начался как форк открытой версии когда-то популярной поисковой системы Sphinx Search . У нас было три разработчика на C++, инженер по поддержке, активный пользователь Sphinx Search / руководитель бэкенд-команды, опытный менеджер, мать пятерых детей, помогающая нам неполный рабочий день, коробка пончиков и тонна ошибок, сбоев и технических долгов. Так что мы взяли лопату и другие инструменты для копки и начали работать, чтобы привести его в соответствие с отраслевыми стандартами поисковых систем. Не то чтобы Sphinx было невозможно использовать, но многого не хватало, а существующие функции были не совсем стабильными или зрелыми. И мы продвинули его примерно так далеко, как могли. Так что после 5 лет и сотен новых пользователей мы готовы сказать, что Manticore Search можно использовать как альтернативу Elasticsearch как для полнотекстового поиска, так и (теперь) для аналитики данных.

В этой статье я хочу:

⭐⭐⭐ Ваша звезда на GitHub поддерживает проект и заставляет нас думать, что мы на правильном пути!⭐⭐⭐

Немного истории

2001 - только Lucene и Sphinx

Открылся первый магазин Apple, вышли Windows XP, iTunes и Mac OS X.

Гений Андрей Аксенов начал работать над Sphinx Search, за что я хочу ему очень поблагодарить! SOLR и Elasticsearch еще не существовали, но уже был Lucene, на основе которого они оба впоследствии были построены. Sphinx Search медленно начал собираться, и через несколько лет стал довольно популярной технологией, оказавшей влияние на тысячи сайтов, использующих его.

2010 - появился Elasticsearch

Дисплей Retina, systemd, Ipad и появился Elasticsearch.

К этому времени Sphinx уже был популярной системой полнотекстового поиска, но концепция Sphinx "исходные данные должны быть где-то, и мы просто создаем полнотекстовый индекс, который нужно регулярно перестраивать" была не так интересна, как "дайте мне любой JSON по HTTP в реальном времени, я найду узел, на который его поместить". SOLR не очень хорошо справлялся с распределением данных, а JSON набирал популярность, в то время как XML терял свою привлекательность. Вскоре Elasticsearch начал стремительно набирать популярность.

2017 - появился Manticore

  • Elastic прочно утвердился как стандартный инструмент для полнотекстового поиска и аналитики логов и данных.
  • Разработка Sphinx прекратилась как открытого проекта. Разработка, в целом, значительно замедлилась, и на некоторое время была полностью приостановлена.
  • Многие пользователи Sphinx, которые любили его и знали, как с ним работать, были недовольны этим, и им было больно мигрировать на Elasticsearch. Кроме того, к тому времени выявились концептуальные недостатки Elasticsearch: чрезмерное потребление памяти, трудности в обслуживании больших кластеров и некоторые проблемы с производительностью.

В результате разочарованные пользователи и некоторые бывшие разработчики Sphinx объединились и создали форк - Manticore Search. Наши основные цели были следующими:

  • Продолжать развивать проект как открытый исходный код
  • Смотреть на все с точки зрения обычного пользователя и добавлять функциональность, необходимую им в современных условиях
  • Укрепить сильные стороны Sphinx и устранить очевидные слабости

2022: Еще пять лет спустя

"Хорошо, кто хочет узнать, работает ли это?"

Хорошо, кто хочет узнать, работает ли это?

🙁 Sphinx 2: Основной случай использования - индексация данных из внешней базы данных: Sphinx возвращает id, затем по id нужно идти в базу данных и искать там исходный документ. Схема данных может быть объявлена только в конфигурации.

✅ Manticore: Основной способ работы с ним точно такой же, как в MySQL / Postgres и Elasticsearch: таблица может быть создана на лету, данные могут быть изменены с помощью одиночного/пакетного запроса INSERT/REPLACE/DELETE, данные автоматически сжимаются в фоновом режиме. Нет необходимости искать оригинальный документ во внешнем источнике. Поддержка авто ID.


🙁 Sphinx 2: Нет репликации.

✅ Manticore: Репликация на основе Galera, которая также используется Mariadb и Percona Server.


🙁 Sphinx 2: Запросы могут выполняться через SQL (протокол MySQL) или бинарный протокол Sphinx, есть клиенты для нескольких языков программирования.

✅ Manticore: Добавлен JSON интерфейс, очень похожий на Elasticsearch. На основе нового протокола были созданы новые клиенты для PHP, Python, Java, Javascript и Elixir. Клиенты генерируются автоматически, что позволяет быстрее получать новую функциональность в клиенте после ее появления в движке.


🙁 Sphinx 2: Сложно настраивать токенизацию текста для большинства языков

✅ Manticore: Упрощено: сделаны псевдонимы cjk и non_cjk. Токенизация китайского языка основана на ICU. Добавлено много новых стеммеров, включая украинский.


🙁 Sphinx 2: Нет официального образа docker и поддержки в экосистеме Kubernetes

✅ Manticore: Создан и поддерживается официальный docker и Helm chart для Kubernetes


🙁 Sphinx 2: Нет репозиториев APT/YUM/Homebrew

✅ Manticore: Добавлены APT/YUM/Homebrew репозитории. Ночные сборки также доступны в разработческом репозитории . Каждый новый коммит становится доступным как пакет.


🙁 Sphinx 2: Новичкам было трудно понять, что к чему.

✅ Manticore: Создана платформа с интерактивными курсами --- https://play.manticoresearch.com/


🙁 Sphinx 2: Мало примеров в документации

✅ Manticore: переписана документация, создан собственный движок рендеринга для него - https://manual.manticoresearch.com/ . Он также доступен в простом формате markdown для внесения изменений и легкого редактирования.


🙁 Sphinx 2: Ошибки, которые часто приводят к сбоям

✅ Manticore: Сбои теперь редки. Сотни старых ошибок были исправлены.


🙁 Sphinx 2: Запуск поисковых запросов параллельно ограничен

✅ Manticore: Перешли на корутины . Сделали возможным параллелизировать любой поисковый запрос, чтобы полностью загрузить ЦП и свести время отклика к минимуму


🙁 Sphinx 2: Не может использоваться без полнотекстовых полей

✅ Manticore: Может использоваться без полнотекстовых, как и любая другая база данных.


🙁 Sphinx 2: Неполнотекстовые данные хранятся построчно, они должны находиться в памяти для эффективной работы.

✅ Manticore: Реализована и открыта Manticore Columnar Library , внешняя полностью независимая библиотека, которая позволяет хранить данные в колонно-ориентированном виде в блоках с поддержкой различных кодеков для эффективного сжатия различных типов данных. Требует почти никакой памяти. Теперь вы можете обрабатывать гораздо большие объемы данных на одном сервере.


🙁 Sphinx 2: Нет вторичных индексов

✅ Manticore: Вторая важная функциональность Manticore Columnar Library - это поддержка вторичных индексов на основе современного и инновационного алгоритма PGM .


🙁 Sphinx 2: Нет индексов перколяции для обратного поиска (когда в индексе есть запросы, а документы используются в качестве входных данных, чтобы выяснить, какие запросы им соответствуют)

✅ Manticore: Добавлены индексы типа перколяции.

Это примерно только треть изменений - те, которые вы можете легко увидеть. Кроме того, было много месяцев рефакторинга различных частей системы, что привело к гораздо более простому, надежному и продуктивному коду. Мы надеемся, что это привлечет новых разработчиков к проекту.

Что насчет Elasticsearch?

Elasticsearch в порядке: его не очень сложно использовать до определенного объема данных, есть репликация, отказоустойчивость и богатая функциональность. Но есть нюансы.

Давайте рассмотрим эти нюансы и то, как Manticore выглядит по сравнению с Elasticsearch сейчас (июль 2022). Будущий читатель, мы уже прикрепили что-то еще, ознакомьтесь с нашим Changelog .

Скорость поиска

Производительность, а именно низкое время отклика, важно во многих случаях, особенно в логах и аналитике данных, когда данных много, а поисковых запросов не так много. Вы не хотите ждать 30 секунд вместо двух для ответа, не так ли? Итак, вот нюансы: Elasticsearch считается стандартом для управления логами, но, например, он не может эффективно параллелизировать запрос к одному индексу. И у Elasticsearch по умолчанию только 1 шард, но на современных серверах гораздо больше ядер ЦП. Создание слишком большого количества шардов также плохо. Все это не облегчает жизнь девопсу, который заботится о времени отклика: вам нужно думать о том, на каком оборудовании будет работать Elasticsearch, и вносить изменения соответственно.

Manticore, напротив, способен параллелизировать поисковый запрос на все ядра ЦП без условий и по умолчанию. Правильнее было бы сказать, что Manticore сам решает, когда параллелизировать, а когда нет, но в большинстве случаев он это делает, что позволяет эффективно загружать ядра ЦП (которые часто простаивают в случаях логирования и аналитики данных) и значительно снижать время отклика.

Но даже если вы создадите столько шардов в Elasticsearch, сколько ядер ЦП на сервере, Manticore оказывается значительно быстрее, а именно: вот тест на 1,7 миллиарда документов, из которого видно, что в целом Manticore в 4 раза быстрее, чем Elasticsearch. Если вас интересуют детали или вы хотите воспроизвести это на своем оборудовании, вот статья https://db-benchmarks.com/test-taxi/ (все примеры ниже также поддерживаются скриптами и ссылками и т. д., вы не найдете пустой болтовни в этом блоге)

Manticore в 4 раза быстрее, чем настроенный Elasticsearch в тесте на 1,7 миллиарда документов

Вот другой случай: нет больших данных, всего 1,1 миллиона комментариев из Hacker News. В этом тесте Manticore в 15 раз быстрее, чем Elasticsearch. Все детали здесь .

Manticore в 15 раз быстрее, чем Elasticsearch в тесте на 1,1 миллиона документов

И еще один тест, показательный для Elasticsearch как стандартного инструмента аналитики логов - 10 миллионов логов Nginx и различные довольно реалистичные аналитические запросы - Manticore в 22 раза быстрее, чем Elasticsearch здесь. Все детали здесь

Manticore в 22 раза быстрее, чем Elasticsearch в тесте на 10 миллионов записей логов Nginx

Производительность загрузки данных

Есть также нюансы с записью в Elasticsearch. Например, набор данных для теста на 1,7 миллиарда документов, обсуждаемого выше, был загружен:

  • в Elasticsearch - за 28 часов и 33 минуты
  • в Manticore Search - за 1 час и 8 минут.

Это было на сервере с 32 ядрами и SSD. Объемы данных после индексации примерно одинаковы. Чтобы узнать больше о том, как именно была обработана загрузка, читайте здесь .

Вкратце:

  • Источник - csv
  • Для загрузки данных в Elasticsearch использовался Logstash с PIPELINE_BATCH_SIZE=10000 и PIPELINE_WORKERS=32 в 32 шардов.
  • Manticore Search использовал встроенный инструмент indexer для загрузки данных в 32 шардов параллельно.

Вот журнал загрузки данных:

Elasticsearch:

root@perf3 /perf/test_engines/tests/taxi # ./init                                                                                                                           WARNING: The cpuset variable is not set. Defaulting to a blank string.
Removing elasticsearch_engine ... done
Removing network test_engines_default
No stopped containers
Manticore Search (type columnar):
No stopped containers
WARNING: The cpuset variable is not set. Defaulting to a blank string.
Building manticoresearch
Step 1/4 : FROM manticoresearch/manticore:5.0.0
 ---> 32e4119b4d86
Step 2/4 : RUN apt-get -y update && apt-get -y install wget
 ---> Using cache
 ---> 6322fd861e6d
Step 3/4 : RUN wget https://repo.manticoresearch.com/manticore-repo.noarch.deb && dpkg -i manticore-repo.noarch.deb
 ---> Using cache
 ---> b70ad32ac505
Step 4/4 : RUN apt-get -y update && apt-get -y install manticore-columnar-lib
 ---> Using cache
 ---> 1fcc45e375ba

Successfully built 1fcc45e375ba
Successfully tagged manticoresearch:test
        No need to rebuild
Elasticsearch (type tuned):
No stopped containers
        Starting elasticsearch (test=taxi suffix=_tuned docker-compose -f ../../docker-compose.yml --env-file ../../.env up -d elasticsearch)
WARNING: The cpuset variable is not set. Defaulting to a blank string.
Creating network "test_engines_default" with the default driver
Creating elasticsearch_engine ... done
        Waiting for elasticsearch to come up
        Starting loading at Fri Jul  1 04:13:20 PM CEST 2022
2022/07/01 14:13:20 Setting 'pipeline.batch.size' from environment.
2022/07/01 14:13:20 Setting 'xpack.monitoring.enabled' from environment.
2022/07/01 14:13:20 Setting 'pipeline.workers' from environment.
Using bundled JDK: /usr/share/logstash/jdk
Sending Logstash logs to /usr/share/logstash/logs which is now configured via log4j2.properties
[2022-07-01T14:13:29,080][INFO ][logstash.runner          ] Log4j configuration path used is: /usr/share/logstash/config/log4j2.properties
[2022-07-01T14:13:29,084][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=>"7.15.2", "jruby.version"=>"jruby 9.2.19.0 (2.5.8) 2021-06-15 55810c552b OpenJDK 64-Bit Server VM 11.0.12+7 on 11.0.12+7 +jit [linux-x86_64]"}
[2022-07-01T14:13:29,087][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/usr/share/logstash/data/queue"}
[2022-07-01T14:13:29,088][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.dead_letter_queue", :path=>"/usr/share/logstash/data/dead_letter_queue"}
[2022-07-01T14:13:29,240][INFO ][logstash.agent           ] No persistent UUID file found. Generating new UUID {:uuid=>"5ae0d5d3-2824-4ba7-bcc0-a25e899223b0", :path=>"/usr/share/logstash/data/uuid"}
[2022-07-01T14:13:29,534][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
[2022-07-01T14:13:29,973][INFO ][org.reflections.Reflections] Reflections took 66 ms to scan 1 urls, producing 120 keys and 417 values
[2022-07-01T14:13:30,192][WARN ][deprecation.logstash.codecs.plain] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T14:13:30,201][WARN ][deprecation.logstash.inputs.file] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T14:13:30,223][WARN ][deprecation.logstash.filters.csv] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T14:13:30,270][WARN ][deprecation.logstash.codecs.plain] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T14:13:30,283][WARN ][deprecation.logstash.outputs.elasticsearch] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T14:13:30,292][INFO ][logstash.outputs.elasticsearch][main] New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>["//127.0.0.1:9200"]}
[2022-07-01T14:13:30,412][INFO ][logstash.outputs.elasticsearch][main] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[http://127.0.0.1:9200/]}}
[2022-07-01T14:13:30,448][WARN ][logstash.outputs.elasticsearch][main] Attempted to resurrect connection to dead ES instance, but got an error {:url=>"http://127.0.0.1:9200/", :exception=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :message=>"Elasticsearch Unreachable: [http://127.0.0.1:9200/][Manticore::ClientProtocolException] 127.0.0.1:9200 failed to respond"}
[2022-07-01T14:13:30,460][INFO ][logstash.javapipeline    ][main] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>32, "pipeline.batch.size"=>10000, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>320000, "pipeline.sources"=>["/usr/share/logstash/pipeline/logstash.conf"], :thread=>"#<Thread:0x3cf654c4@/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:125 run>"}
[2022-07-01T14:13:30,461][WARN ][logstash.javapipeline    ][main] CAUTION: Recommended inflight events max exceeded! Logstash will run with up to 320000 events in memory in your current configuration. If your message sizes are large this may cause instability with the default heap size. Please consider setting a non-standard heap size, changing the batch size (currently 10000), or changing the number of pipeline workers (currently 32) {:pipeline_id=>"main", :thread=>"#<Thread:0x3cf654c4@/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:125 run>"}
[2022-07-01T14:13:31,275][INFO ][logstash.javapipeline    ][main] Pipeline Java execution initialization time {"seconds"=>0.81}
[2022-07-01T14:13:31,286][INFO ][logstash.javapipeline    ][main] Pipeline started {"pipeline.id"=>"main"}
[2022-07-01T14:13:31,290][INFO ][filewatch.observingread  ][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] START, creating Discoverer, Watch with file and sincedb collections
[2022-07-01T14:13:31,305][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2022-07-01T14:13:31,336][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T14:13:35,455][WARN ][logstash.outputs.elasticsearch] Attempted to resurrect connection to dead ES instance, but got an error {:url=>"http://127.0.0.1:9200/", :exception=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :message=>"Elasticsearch Unreachable: [http://127.0.0.1:9200/][Manticore::SocketException] Connection reset"}
[2022-07-01T14:13:40,811][WARN ][logstash.outputs.elasticsearch] Restored connection to ES instance {:url=>"http://127.0.0.1:9200/"}
[2022-07-01T14:13:40,945][INFO ][logstash.outputs.elasticsearch] Elasticsearch version determined (7.15.2) {:es_version=>7}
[2022-07-01T14:13:40,946][WARN ][logstash.outputs.elasticsearch] Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=>7}
[2022-07-01T14:13:44,465][INFO ][logstash.outputs.elasticsearch] Using mapping template from {:path=>"/template.json"}
[2022-07-01T14:13:44,483][INFO ][logstash.outputs.elasticsearch] Installing Elasticsearch template {:name=>"logstash"}

[2022-07-01T14:25:18,564][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T14:36:51,663][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T14:47:48,196][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T14:58:24,202][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T15:09:34,405][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T15:21:00,702][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T15:32:29,427][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T15:43:59,768][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T15:55:24,851][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T16:06:51,722][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T16:18:22,191][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T16:29:54,860][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T16:41:22,213][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T16:52:53,302][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T17:04:26,699][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T17:16:05,588][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T17:27:40,146][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T17:39:11,727][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T17:50:43,353][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T18:02:13,095][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T18:13:59,913][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T18:25:38,646][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T18:37:17,263][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T18:48:55,751][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T19:00:51,379][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T19:13:09,935][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T19:25:16,811][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T19:37:15,727][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T19:48:59,923][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T20:00:46,024][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T20:12:27,410][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T20:24:06,169][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T20:35:44,409][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T20:47:16,165][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T20:58:55,137][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T21:10:32,131][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T21:22:13,640][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T21:33:58,533][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T21:45:30,972][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T21:57:09,853][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T22:08:51,288][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T22:20:38,762][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T22:32:13,204][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T22:43:49,824][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T22:55:52,191][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T23:07:49,883][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T23:20:17,374][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T23:32:19,973][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T23:44:15,294][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-01T23:55:47,100][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T00:07:11,897][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T00:18:40,233][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T00:30:32,451][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T00:42:16,614][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T00:53:53,569][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T01:05:28,623][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T01:17:13,903][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T01:29:10,660][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T01:41:00,455][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T01:52:42,559][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T02:04:14,124][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T02:16:04,127][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T02:27:51,732][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T02:39:56,423][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T02:51:54,136][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T03:03:46,056][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T03:15:54,520][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T03:26:58,089][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T03:38:05,988][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T03:48:58,174][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T03:59:49,479][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T04:10:37,353][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T04:21:19,909][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T04:31:52,571][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T04:42:25,201][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T04:53:00,526][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T05:03:39,891][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T05:14:19,439][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T05:24:59,133][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T05:35:34,450][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T05:46:12,227][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T05:56:52,682][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T06:07:30,958][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T06:18:08,658][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T06:28:49,737][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T06:39:34,836][WARN ][deprecation.logstash.codecs.plain][main][df6082e07bf59ecdc49074832e93c5e058465344886b3ad93818b05a69e52527] Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode.
[2022-07-02T06:46:35,043][INFO ][logstash.javapipeline    ][main] Pipeline terminated {"pipeline.id"=>"main"}
[2022-07-02T06:46:35,202][INFO ][logstash.pipelinesregistry] Removed pipeline from registry successfully {:pipeline_id=>:main}
[2022-07-02T06:46:35,211][INFO ][logstash.runner          ] Logstash shut down.
        Finished loading at Sat Jul  2 08:46:36 AM CEST 2022

Manticore Search:

root@perf3 /perf/test_engines/tests/taxi # ./init
WARNING: The cpuset variable is not set. Defaulting to a blank string.
Stopping elasticsearch_engine ... done
Removing elasticsearch_engine ... done
Removing network test_engines_default
No stopped containers
Manticore Search (type columnar):
No stopped containers
WARNING: The cpuset variable is not set. Defaulting to a blank string.
Building manticoresearch
Step 1/4 : FROM manticoresearch/manticore:5.0.0
 ---> 32e4119b4d86
Step 2/4 : RUN apt-get -y update && apt-get -y install wget
 ---> Using cache
 ---> 6322fd861e6d
Step 3/4 : RUN wget https://repo.manticoresearch.com/manticore-repo.noarch.deb && dpkg -i manticore-repo.noarch.deb
 ---> Using cache
 ---> b70ad32ac505
Step 4/4 : RUN apt-get -y update && apt-get -y install manticore-columnar-lib
 ---> Using cache
 ---> 1fcc45e375ba

Successfully built 1fcc45e375ba
Successfully tagged manticoresearch:test
        Starting loading at Sun Jul  3 07:26:48 PM CEST 2022
WARNING: The cpuset variable is not set. Defaulting to a blank string.
Creating network "test_engines_default" with the default driver
Creating test_engines_manticoresearch_run ... done
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi2'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi5'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi6'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi9'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi15'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi1'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi12'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi14'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi8'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi7'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi13'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi10'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi3'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi4'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi11'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi16'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi17'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi18'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi19'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi20'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi21'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi22'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi23'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi24'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi25'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi26'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi27'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi28'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi29'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi30'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi31'...
Manticore 5.0.0 b4cb7da02@220518 release (columnar 1.15.2 b0bcafb@220518) (secondary 1.15.2 b0bcafb@220518)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
Copyright (c) 2017-2022, Manticore Software LTD (https://manticoresearch.com)

using config file '/etc/manticoresearch/manticore.conf'...
indexing index 'taxi32'...
collected 40000000 docs, 80.0 MB
collected 40000000 docs, 80.0 MB
collected 40000000 docs, 80.0 MB
collected 40000000 docs, 80.0 MB
collected 40000000 docs, 80.0 MB
collected 40000000 docs, 80.0 MB
collected 40000000 docs, 80.0 MB
collected 40000000 docs, 80.0 MB
collected 40000000 docs, 814.9 MB
creating lookup: 40000.0 Kdocs, 100.0% done
creating lookup: 40000.0 Kdocs, 100.0% done
creating lookup: 40000.0 Kdocs, 100.0% done
creating lookup: 40000.0 Kdocs, 100.0% done
creating lookup: 40000.0 Kdocs, 100.0% done
creating lookup: 40000.0 Kdocs, 100.0% done
creating lookup: 40000.0 Kdocs, 100.0% done
creating lookup: 40000.0 Kdocs, 100.0% done
sorted 80.0 Mhits, 100.0% done
total 40000000 docs, 80000000 bytes
total 2116.941 sec, 37790 bytes/sec, 18895.18 docs/sec
total 530 reads, 3.914 sec, 1916.2 kb/call avg, 7.3 msec/call avg
total 8347 writes, 5.855 sec, 406.9 kb/call avg, 0.7 msec/call avg
sorted 80.0 Mhits, 100.0% done
total 40000000 docs, 80000000 bytes
total 2118.297 sec, 37766 bytes/sec, 18883.09 docs/sec
total 530 reads, 3.850 sec, 1916.2 kb/call avg, 7.2 msec/call avg
total 8371 writes, 5.813 sec, 406.5 kb/call avg, 0.6 msec/call avg
sorted 80.0 Mhits, 100.0% done
total 40000000 docs, 80000000 bytes
total 2119.772 sec, 37739 bytes/sec, 18869.94 docs/sec
total 530 reads, 4.239 sec, 1916.2 kb/call avg, 7.9 msec/call avg
total 8742 writes, 5.988 sec, 399.9 kb/call avg, 0.6 msec/call avg
sorted 80.0 Mhits, 100.0% done
total 40000000 docs, 80000000 bytes
total 2121.282 sec, 37713 bytes/sec, 18856.51 docs/sec
total 530 reads, 3.697 sec, 1916.2 kb/call avg, 6.9 msec/call avg
total 8941 writes, 3.312 sec, 396.6 kb/call avg, 0.3 msec/call avg
sorted 80.0 Mhits, 100.0% done
sorted 80.0 Mhits, 100.0% done
total 40000000 docs, 80000000 bytes
total 2124.098 sec, 37663 bytes/sec, 18831.52 docs/sec
total 530 reads, 3.686 sec, 1916.2 kb/call avg, 6.9 msec/call avg
total 8972 writes, 3.289 sec, 396.1 kb/call avg, 0.3 msec/call avg
total 40000000 docs, 80000000 bytes
total 2124.121 sec, 37662 bytes/sec, 18831.31 docs/sec
total 530 reads, 3.497 sec, 1916.2 kb/call avg, 6.5 msec/call avg
total 8916 writes, 3.380 sec, 397.0 kb/call avg, 0.3 msec/call avg
sorted 80.0 Mhits, 100.0% done
total 40000000 docs, 80000000 bytes
total 2130.926 sec, 37542 bytes/sec, 18771.17 docs/sec
total 530 reads, 7.057 sec, 1916.2 kb/call avg, 13.3 msec/call avg
total 9074 writes, 3.303 sec, 394.5 kb/call avg, 0.3 msec/call avg
sorted 80.0 Mhits, 100.0% done
total 40000000 docs, 80000000 bytes
total 2131.300 sec, 37535 bytes/sec, 18767.88 docs/sec
total 530 reads, 7.140 sec, 1916.2 kb/call avg, 13.4 msec/call avg
total 9005 writes, 5.885 sec, 395.6 kb/call avg, 0.6 msec/call avg
collected 52817071 docs, 105.6 MB
creating lookup: 40000.0 Kdocs, 100.0% done
sorted 163.8 Mhits, 100.0% done
total 40000000 docs, 814943250 bytes
total 2387.474 sec, 341341 bytes/sec, 16754.10 docs/sec
total 748 reads, 5.297 sec, 1846.8 kb/call avg, 7.0 msec/call avg
total 15726 writes, 8.017 sec, 363.3 kb/call avg, 0.5 msec/call avg
creating lookup: 52817.0 Kdocs, 100.0% done
sorted 105.6 Mhits, 100.0% done
total 52817071 docs, 105634142 bytes
total 2752.827 sec, 38372 bytes/sec, 19186.48 docs/sec
total 947 reads, 3.342 sec, 1416.1 kb/call avg, 3.5 msec/call avg
total 11846 writes, 6.872 sec, 396.2 kb/call avg, 0.5 msec/call avg
collected 60000000 docs, 1663.3 MB
collected 60000000 docs, 1760.9 MB
collected 60000000 docs, 2526.3 MB
collected 60000000 docs, 2526.9 MB
collected 60000000 docs, 2521.6 MB
collected 60000000 docs, 2527.2 MB
collected 60000000 docs, 2519.4 MB
collected 60000000 docs, 2528.9 MB
collected 60000000 docs, 2550.7 MB
collected 60000000 docs, 2530.5 MB
collected 60000000 docs, 2535.5 MB
collected 60000000 docs, 2521.5 MB
collected 60000000 docs, 2524.7 MB
collected 60000000 docs, 2530.4 MB
collected 60000000 docs, 2541.5 MB
collected 60000000 docs, 2523.3 MB
collected 60000000 docs, 2545.0 MB
collected 60000000 docs, 2523.0 MB
collected 60000000 docs, 2529.6 MB
collected 60000000 docs, 2533.7 MB
collected 60000000 docs, 2533.7 MB
collected 60000000 docs, 2533.0 MB
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
sorted 296.5 Mhits, 100.0% done
total 60000000 docs, 1663373694 bytes
total 3755.841 sec, 442876 bytes/sec, 15975.11 docs/sec
total 1890 reads, 6.795 sec, 1210.9 kb/call avg, 3.5 msec/call avg
total 27244 writes, 8.377 sec, 360.1 kb/call avg, 0.3 msec/call avg
sorted 286.6 Mhits, 100.0% done
total 60000000 docs, 1760925599 bytes
total 3781.297 sec, 465693 bytes/sec, 15867.56 docs/sec
total 1861 reads, 5.982 sec, 1223.1 kb/call avg, 3.2 msec/call avg
total 32940 writes, 9.832 sec, 338.7 kb/call avg, 0.2 msec/call avg
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
creating lookup: 60000.0 Kdocs, 100.0% done
sorted 394.0 Mhits, 100.0% done
total 60000000 docs, 2526368830 bytes
total 4003.871 sec, 630981 bytes/sec, 14985.49 docs/sec
total 2506 reads, 15.430 sec, 1085.0 kb/call avg, 6.1 msec/call avg
total 36437 writes, 10.878 sec, 346.9 kb/call avg, 0.2 msec/call avg
sorted 398.1 Mhits, 100.0% done
total 60000000 docs, 2550752406 bytes
total 4030.026 sec, 632936 bytes/sec, 14888.23 docs/sec
total 2608 reads, 11.693 sec, 1047.5 kb/call avg, 4.4 msec/call avg
total 35896 writes, 10.655 sec, 349.2 kb/call avg, 0.2 msec/call avg
sorted 394.5 Mhits, 100.0% done
total 60000000 docs, 2526941479 bytes
total 4039.151 sec, 625611 bytes/sec, 14854.60 docs/sec
total 2508 reads, 10.428 sec, 1084.2 kb/call avg, 4.1 msec/call avg
total 36716 writes, 10.820 sec, 345.5 kb/call avg, 0.2 msec/call avg
sorted 395.6 Mhits, 100.0% done
total 60000000 docs, 2533004314 bytes
total 4040.958 sec, 626832 bytes/sec, 14847.96 docs/sec
total 2599 reads, 10.602 sec, 1047.5 kb/call avg, 4.0 msec/call avg
total 36421 writes, 13.513 sec, 346.1 kb/call avg, 0.3 msec/call avg
sorted 395.0 Mhits, 100.0% done
total 60000000 docs, 2528909232 bytes
total 4042.235 sec, 625621 bytes/sec, 14843.27 docs/sec
total 2510 reads, 12.530 sec, 1084.5 kb/call avg, 4.9 msec/call avg
total 35811 writes, 13.278 sec, 348.4 kb/call avg, 0.3 msec/call avg
sorted 395.1 Mhits, 100.0% done
total 60000000 docs, 2530457184 bytes
total 4043.242 sec, 625848 bytes/sec, 14839.57 docs/sec
total 2510 reads, 10.881 sec, 1084.3 kb/call avg, 4.3 msec/call avg
total 36415 writes, 13.446 sec, 346.8 kb/call avg, 0.3 msec/call avg
sorted 394.6 Mhits, 100.0% done
total 60000000 docs, 2519499069 bytes
total 4043.766 sec, 623057 bytes/sec, 14837.65 docs/sec
total 2508 reads, 11.577 sec, 1082.6 kb/call avg, 4.6 msec/call avg
total 35936 writes, 10.685 sec, 348.6 kb/call avg, 0.2 msec/call avg
sorted 396.3 Mhits, 100.0% done
total 60000000 docs, 2535539179 bytes
total 4045.012 sec, 626831 bytes/sec, 14833.08 docs/sec
total 2601 reads, 10.332 sec, 1047.6 kb/call avg, 3.9 msec/call avg
total 36545 writes, 10.750 sec, 345.9 kb/call avg, 0.2 msec/call avg
sorted 394.8 Mhits, 100.0% done
total 60000000 docs, 2527225224 bytes
total 4045.299 sec, 624731 bytes/sec, 14832.03 docs/sec
total 2509 reads, 10.903 sec, 1084.0 kb/call avg, 4.3 msec/call avg
total 35913 writes, 10.725 sec, 348.2 kb/call avg, 0.2 msec/call avg
sorted 394.9 Mhits, 100.0% done
total 60000000 docs, 2523385127 bytes
total 4045.569 sec, 623740 bytes/sec, 14831.03 docs/sec
total 2509 reads, 7.503 sec, 1081.6 kb/call avg, 2.9 msec/call avg
total 36191 writes, 10.624 sec, 347.4 kb/call avg, 0.2 msec/call avg
sorted 394.9 Mhits, 100.0% done
total 60000000 docs, 2524711893 bytes
total 4046.779 sec, 623881 bytes/sec, 14826.60 docs/sec
total 2509 reads, 10.721 sec, 1082.9 kb/call avg, 4.2 msec/call avg
total 36326 writes, 10.709 sec, 346.5 kb/call avg, 0.2 msec/call avg
sorted 395.1 Mhits, 100.0% done
total 60000000 docs, 2529673951 bytes
total 4048.110 sec, 624902 bytes/sec, 14821.72 docs/sec
total 2510 reads, 9.881 sec, 1083.9 kb/call avg, 3.9 msec/call avg
total 36528 writes, 10.929 sec, 346.3 kb/call avg, 0.2 msec/call avg
sorted 394.8 Mhits, 100.0% done
total 60000000 docs, 2530548084 bytes
total 4048.832 sec, 625006 bytes/sec, 14819.08 docs/sec
total 2509 reads, 11.065 sec, 1085.1 kb/call avg, 4.4 msec/call avg
total 36033 writes, 13.487 sec, 348.0 kb/call avg, 0.3 msec/call avg
sorted 396.6 Mhits, 100.0% done
total 60000000 docs, 2541500170 bytes
total 4049.268 sec, 627644 bytes/sec, 14817.49 docs/sec
total 2603 reads, 9.141 sec, 1047.9 kb/call avg, 3.5 msec/call avg
total 35976 writes, 10.642 sec, 348.3 kb/call avg, 0.2 msec/call avg
sorted 397.1 Mhits, 100.0% done
total 60000000 docs, 2545075714 bytes
total 4049.585 sec, 628478 bytes/sec, 14816.33 docs/sec
total 2605 reads, 10.802 sec, 1048.6 kb/call avg, 4.1 msec/call avg
total 36079 writes, 10.748 sec, 348.3 kb/call avg, 0.2 msec/call avg
sorted 393.8 Mhits, 100.0% done
total 60000000 docs, 2521600380 bytes
total 4050.387 sec, 622557 bytes/sec, 14813.39 docs/sec
total 2505 reads, 8.642 sec, 1084.8 kb/call avg, 3.4 msec/call avg
total 37029 writes, 10.997 sec, 345.8 kb/call avg, 0.2 msec/call avg
sorted 394.4 Mhits, 100.0% done
total 60000000 docs, 2521590009 bytes
total 4050.635 sec, 622517 bytes/sec, 14812.48 docs/sec
total 2507 reads, 9.764 sec, 1084.3 kb/call avg, 3.8 msec/call avg
total 36405 writes, 10.763 sec, 346.0 kb/call avg, 0.2 msec/call avg
sorted 395.5 Mhits, 100.0% done
total 60000000 docs, 2533750585 bytes
total 4052.470 sec, 625235 bytes/sec, 14805.78 docs/sec
total 2598 reads, 8.921 sec, 1046.4 kb/call avg, 3.4 msec/call avg
total 35573 writes, 10.726 sec, 350.0 kb/call avg, 0.3 msec/call avg
sorted 394.6 Mhits, 100.0% done
total 60000000 docs, 2523017966 bytes
total 4054.196 sec, 622322 bytes/sec, 14799.48 docs/sec
total 2508 reads, 9.315 sec, 1083.1 kb/call avg, 3.7 msec/call avg
total 36474 writes, 10.862 sec, 346.0 kb/call avg, 0.2 msec/call avg
sorted 395.9 Mhits, 100.0% done
total 60000000 docs, 2533751399 bytes
total 4058.118 sec, 624366 bytes/sec, 14785.17 docs/sec
total 2600 reads, 9.010 sec, 1046.6 kb/call avg, 3.4 msec/call avg
total 35132 writes, 13.446 sec, 351.9 kb/call avg, 0.3 msec/call avg
        Finished loading at Sun Jul  3 08:34:27 PM CEST 2022

Оказывается, что в этом тесте Manticore в 25 раз быстрее по скорости загрузки данных. Возможно, я не знаю, как правильно настроить Logstash и Elasticsearch, но импорт того же набора данных (хотя и немного меньшего размера) занял у Марка Литвинчика даже больше времени - 4 дня и 16 часов.

Может быть, проблема в Logstash, а не в Elasticsearch? Давайте выясним это, записывая данные напрямую в Elasticsearch. Схема индекса следующая:

"properties": {
  "name": {"type": "text"},
  "email": {"type": "keyword"},
  "description": {"type": "text"},
  "age": {"type": "integer"},
  "active": {"type": "integer"}
}

Запускаем Manticore и Elasticsearch, используя их официальные образы docker следующим образом:

docker run --name manticore --rm -p 9308:9308 -v $(pwd)/manticore_idx:/var/lib/manticore manticoresearch/manticore:5.0.2

docker run --name elasticsearch --rm -p 9200:9200 -e discovery.type=single-node -e xpack.security.enabled=false -v $(pwd)/es_idx/:/usr/share/elasticsearch/data docker.elastic.co/elasticsearch/elasticsearch:8.3.2

Теперь давайте загрузим 50 миллионов случайных документов в оба:

{
  1,
  84,
  "Aut corporis qui necessitatibus architecto est. Harum laboriosam temporibus praesentium quis et nulla. Consequuntur quia neque et repellat.",
  "[email protected]",
  "Keely Doyle Sr."
}

Мы будем использовать простые php-скрипты с размером пакета 10,000 и параллельностью 32 (на сервере 16 физических ядер CPU и гиперпоточность).

root@perf3 ~ # php load_elasticsearch.php 10000 32 1000000 50
preparing...
found in cache
querying...
finished inserting
Total time: 178.24096798897
280519 docs per sec

root@perf3 ~ # php load_manticore.php 10000 32 1000000 50
preparing...
found in cache
querying...
finished inserting
Total time: 215.7572619915
231742 docs per sec

Хорошо, теперь Elastic на 21% быстрее, но снова есть интересный нюанс: Elasticsearch по умолчанию буферизует новые документы в течение одной секунды, что означает, что последний пакет не будет доступен для поиска сразу. Это нормально во многих случаях, но чтобы сделать все справедливо, давайте сделаем /bulk?refresh=1 в Elasticsearch и посмотрим, что это даст:

root@perf3 ~ # php load_elasticsearch.php 10000 32 1000000 50
preparing...
found in cache
querying...
finished inserting
Total time: 307.47588610649
162614 docs per sec

В этом случае Manticore снова быстрее на 43%.

Если мы хотим протестировать максимальную производительность, мы можем:

  • Использовать шардирование как в Elasticsearch, так и в Manticore
  • Позволить Elasticsearch буферизовать входящие документы на максимуме
  • Использовать интерфейс MySQL для загрузки данных в Manticore Search (это немного быстрее)
  • Отключить binlog в Manticore Search (к сожалению, вы не можете сделать это в Elasticsearch)

Вот что это дает:

Manticore:

// docker run -p9306:9306 --name manticore --rm -v $(pwd)/manticore_idx:/var/lib/manticore -e searchd_binlog_path= manticoresearch/manticore:5.0.2

root@perf3 ~ # php load_manticore_sharded.php 10000 32 1000000 32 50
preparing...
found in cache /tmp/bc9719fb0d26e18fc53d6d5aaaf847b4_10000_1000000
querying...
finished inserting
Total time: 55.874907970428
894856 docs per sec

Elasticsearch:

root@perf3 ~ # php load_elasticsearch_sharded.php 10000 32 1000000 32 50
preparing...
found in cache
querying...
finished inserting
Total time: 119.96515393257
416788 docs per sec

Но помните нюанс: вам нужно потратить еще 13 секунд, чтобы сделать документы доступными для поиска:

root@perf3 ~ # curl -s -X POST "localhost:9200/_sql?format=json&pretty" -H 'Content-Type: application/json' -d'{"query": "select count(*) from user"}'                 {
  "columns" : [
    {
      "name" : "count(*)",
      "type" : "long"
    }
  ],
  "rows" : [
    [
      0
    ]
  ]
}

root@perf3 ~ # time curl -XPOST "localhost:9200/user/_refresh"
{"_shards":{"total":64,"successful":32,"failed":0}}
real    0m13.505s
user    0m0.003s
sys     0m0.000s

root@perf3 ~ # curl -s -X POST "localhost:9200/_sql?format=json&pretty" -H 'Content-Type: application/json' -d'{"query": "select count(*) from user"}'
{
  "columns" : [
    {
      "name" : "count(*)",
      "type" : "long"
    }
  ],
  "rows" : [
    [
      50000000
    ]
  ]
}

В общем, Manticore в 2 раза быстрее, чем Elasticsearch по производительности загрузки данных. И данные доступны для поиска сразу после загрузки пакета, а не через 2 минуты. Скрипты, использованные для этого теста, можно найти здесь .

На чем это написано

  • Сам Elasticsearch написан на Java, и библиотека Lucene, которую он использует и от которой зависит, также написана на Java.
  • Manticore написан на C++. Что это дает:
    • Код сложнее писать, да.
    • Но мы ближе к оборудованию, поэтому можем сделать более оптимизированный код.
    • Нет необходимости думать о размере кучи JVM.
    • Нет риска для сборщика мусора JVM начать gc в неподходящий момент, что может сильно повлиять на производительность.
    • Нет необходимости запускать тяжелую JVM при старте, что занимает довольно много времени.

Открытый код

  • Elasticsearch больше не является чисто открытым исходным кодом. Лицензия была изменена с Apache 2 на Elastic License в 2021 году.
  • Manticore является чисто открытым исходным кодом с лицензией GPLv2 для демона и лицензией Apache 2 для колоночной библиотеки .

JSON против SQL

Оба Elasticsearch и Manticore могут работать как с SQL, так и с JSON, но разница в следующем:

  • Elasticsearch по умолчанию основан на JSON, в то время как Manticore - SQL-первый. Что нам нравится в SQL, так это то, что если мы его используем, многие вещи гораздо проще сделать на этапе концептуального доказательства. Например, вот 2 запроса, которые делают одно и то же. Вы хотите потратить минуту на подсчет { и } скобок или ... ?

JSON vs SQL

  • SQL в Elasticsearch очень ограничен, например:
    • вы не можете сделать SELECT id
    • вы не можете INSERT/UPDATE/DELETE
    • вы не можете выполнять служебные команды (создать кластер, посмотреть статус и т.д.).
  • В Manticore все наоборот:
    • Вы можете делать все через SQL
    • JSON охватывает только базовую функциональность: запросы на поиск и модификацию данных.

Время запуска

В некоторых случаях вам нужно быстро запустить сервис. Например, в IoT (Интернет вещей) или некоторых сценариях ETL.

Время запуска

Почти в реальном времени против реального времени

Как упоминалось выше, по умолчанию когда вы загружаете данные в Elasticsearch, они становятся доступными для поиска только через секунду. Это можно настроить, но тогда скорость загрузки значительно снизится, как вы можете видеть выше.

Manticore всегда работает в режиме реального времени.

Полнотекстовый поиск

Вероятно, стоит написать еще одну статью, чтобы объяснить это все. Короче: и Manticore, и Elasticsearch хороши с точки зрения полнотекстового поиска, имеют много общего, но также есть много различий. Согласно этим объективным тестам (что важно при оценке релевантности) при почти стандартных настройках Manticore может дать более высокую релевантность, чем Elasticsearch. Вот соответствующий pull request в BEIR(бенчмарк информационного поиска).

Агрегации

И Manticore, и Elasticsearch предоставляют богатую функциональность агрегации. Вы, вероятно, знаете, что может сделать Elasticsearch, вот что можно сделать в Manticore для сравнения:

  • Просто группировка: SELECT release_year FROM films GROUP BY release_year LIMIT 5
  • Получить агрегаты: SELECT release_year, AVG(rental_rate) FROM films GROUP BY release_year LIMIT 5
  • Сортировка бакетов: SELECT release_year, count(*) from films GROUP BY release_year ORDER BY release_year asc limit 5
  • Группировка по нескольким полям одновременно: SELECT category_id, release_year, count(*) FROM films GROUP BY category_id, release_year ORDER BY category_id ASC, release_year ASC
  • Получить N записей из каждого бакета, а не 1: SELECT release_year, title FROM films GROUP 2 BY release_year ORDER BY release_year DESC LIMIT 6
  • Сортировка внутри ведра: SELECT release_year, title, rental_rate FROM films GROUP BY release_year WITHIN GROUP ORDER BY rental_rate DESC ORDER BY release_year DESC LIMIT 5
  • Фильтрация ведер: SELECT release_year, avg(rental_rate) avg FROM films GROUP BY release_year HAVING avg > 3
  • Используйте GROUPBY() для доступа к ключу агрегации: SELECT release_year, count(*) FROM films GROUP BY release_year HAVING GROUPBY() IN (2000, 2002)
  • Группировка по значению массива: SELECT groupby() gb, count(*) FROM shoes GROUP BY sizes ORDER BY gb asc
  • Группировка по узлу json: SELECT groupby() color, count(*) from products GROUP BY meta.color
  • Получить количество уникальных значений: SELECT major, count(*), count(distinct age) FROM students GROUP BY major
  • Используйте GROUP_CONCAT(): SELECT major, count(*), count(distinct age), group_concat(age) FROM students GROUP BY major
  • Используйте FACET после вашего основного запроса, и он сгруппирует результаты основного запроса: SELECT *, price AS aprice FROM facetdemo LIMIT 10 FACET price LIMIT 10 FACET brand_id LIMIT 5
  • Фасетирование по агрегации по другому атрибуту: SELECT * FROM facetdemo FACET brand_name by brand_id
  • Фасетирование без дубликатов: SELECT brand_name, property FROM facetdemo FACET brand_name distinct property
  • Фасетирование по выражениям: SELECT * FROM facetdemo FACET INTERVAL(price,200,400,600,800) AS price_range
  • Фасетирование по многоуровневой группировке: SELECT *,INTERVAL(price,200,400,600,800) AS price_range FROM facetdemo FACET price_range AS price_range, brand_name ORDER BY brand_name asc;
  • Сортировка результатов фасетирования:
    SELECT * FROM facetdemo
    FACET brand_name BY brand_id ORDER BY FACET() ASC
    FACET brand_name BY brand_id ORDER BY brand_name ASC
    FACET brand_name BY brand_id ORDER BY COUNT(*) DESC
    
  • Пагинация в результатах фасетирования:
    SELECT * FROM facetdemo
    FACET brand_name BY brand_id ORDER BY FACET() ASC  LIMIT 0,1
    FACET brand_name BY brand_id ORDER BY brand_name ASC LIMIT 2,4
    FACET brand_name BY brand_id ORDER BY COUNT(*) DESC LIMIT 4;
    

Безсхемный

Elasticsearch известен тем, что вы можете записывать в него что угодно. С Manticore Search вам нужно заранее создать схему. Многие эксперты по Elasticsearch рекомендуют использовать статическое отображение, например, https://octoperf.com/blog/2018/09/21/optimizing-elasticsearch/#index-mapping :

Одно из первых, что вы можете сделать, это определить ваше индексное отображение статически.

Но мы считаем динамическое отображение важным в области управления и анализа логов. Поскольку мы хотим, чтобы Manticore был прост в использовании для этого, мы планируем также включить динамическое отображение в Manticore.

Интеграции

  • И Elasticsearch, и Manticore имеют клиенты для различных языков программирования.
  • Поддержка протокола MySQL:
    • Важным преимуществом Manticore является возможность использовать MySQL-клиенты для работы с сервером. Даже если для какого-то языка нет официального клиента Manticore, определенно есть MySQL-клиент, который вы можете использовать. Использование командной строки MySQL-клиента для администрирования более удобно, чем использование curl, потому что команды гораздо компактнее, и сессия поддерживается.
    • Поддержка протокола MySQL также сделала возможным поддержку MySQL/Mariadb FEDERATED движка для тесной интеграции между ними и Manticore.
    • Кроме того, Manticore можно использовать через ProxySQL .
  • HTTP JSON API поддерживается как в Elasticsearch, так и в Manticore.
  • Logstash, Kibana: Manticore поддерживает Kibana, но это находится в процессе разработки и на бета-стадии. Мы скоро ускорим эти интеграции. Вот как вы можете попробовать Manticore с Kibana:
# download manticore beta version with support for Kibana, check https://repo.manticoresearch.com/repository/kibana_beta/ for different OS versions
wget https://repo.manticoresearch.com/repository/kibana_beta/ubuntu/jammy.zip

# unarchive it
unzip jammy.zip

# install the packages
dpkg -i build/*

# switch Manticore to the mode supporting Kibana
mysql -P9306 -h0 -e "set global log_management = 0; set global log_management = 1;"

# start Kibana pointing it to Manticore Search instance listening on port 9308
docker run -d --name kibana --rm -e ELASTICSEARCH_HOSTS=http://127.0.0.1:9308 -p 5601:5601 --network=host docker.elastic.co/kibana/kibana:7.4.2

# install php and composer, download loading script and put into Manticore 1 million docs of fake users
apt install php composer php8.1-mysql
wget https://gist.githubusercontent.com/sanikolaev/13bf61bbe6c39350bded7c577216435f/raw/8d8029c0d99998c901973fd9ac66a6fb920deda7/load_manticore_sharded.php
composer require fakerphp/faker
php load_manticore_sharded.php 10000 16 1000000 16 1

# don't forget to create an index patter in Kibana (user*)

# run `docker stop kibana` to stop the Kibana server

Если все прошло хорошо, вы должны увидеть:

Kibana с Manticore Search на заднем плане

Репликация

  • И Elasticsearch, и Manticore Search используют синхронную репликацию. В Manticore мы решили не изобретать велосипед и сделали интеграцию с библиотекой Galera , которая также используется Mariadb и Percona Xtradb cluster.
  • Важное отличие в управлении репликацией и кластеризацией в Manticore и Elasticsearch заключается в том, что в Elasticsearch вам нужно редактировать конфигурацию, чтобы настроить реплику, в то время как в Manticore этого не нужно: репликация всегда включена, и очень легко подключиться к другому узлу и синхронизироваться с ним:

ПРИСОЕДИНИТЬ КЛАСТЕР

Шардинг и распределенные индексы

В отличие от Elasticsearch, Manticore пока не имеет автоматического шардинга, но объединение нескольких индексов в один для ручного шардинга проще, чем в Elasticsearch:

Распределенный индекс

Добавление индекса, расположенного на удаленном узле, также поддерживается, просто укажите удаленный хост, порт и имя индекса.

Удобство использования и обучения

Мы считаем, что не хотим, чтобы наши пользователи, будь то разработчик или девопс, становились экспертами в базах данных или поисковых системах или имели степень доктора философии, чтобы иметь возможность использовать продукты Manticore. Мы предполагаем, что у вас есть другие дела, кроме как тратить часы на попытки понять, как эта или та настройка влияет на эту или ту функциональность. Следовательно, Manticore Search должен хорошо работать в большинстве случаев даже с настройками по умолчанию.

Наша конечная цель - сделать Manticore Search как можно более простым в использовании и обучении.

  • Как уже упоминалось, Manticore является SQL-первым, что мы считаем важным, когда вы только начинаете работать с Manticore по сравнению с Elasticsearch.
  • Manticore предоставляет интерактивные курсы - play.manticoresearch.com , чтобы провести вас через основные шаги, чтобы познакомиться с Manticore.
  • Существует руководство о том, как начать с примерами для различных ОС и языков программирования - https://manual.manticoresearch.com/Quick_start_guide .
  • Вы можете напрямую общаться с разработчиками в публичных каналах: Slack , Telegram , Форум .
  • У нас есть специальный короткий домен mnt.cr , интегрированный с документацией, так что mnt.cr/<keyword> перенаправляет вас на результаты поиска в документации в специальном режиме - он сразу перематывает к наиболее релевантному разделу. Это особенно удобно, когда вам нужно вспомнить некоторые детали по какой-либо настройке, например, mnt.cr/max_packet_size .

Облачные технологии

Императивные и декларативные режимы использования

В Elasticsearch большинство действий выполняется только через API. Нет способа ( больше ) добавить сопоставления в файл конфигурации, чтобы они были доступны сразу после запуска.

Manticore, как и Kubernetes, поддерживает два режима использования:

  • Императивный: когда все можно управлять онлайн с помощью CREATE TABLE/DROP TABLE/ALTER TABLE, CREATE CLUSTER/JOIN CLUSTER/DELETE CLUSTER и т.д.
  • Декларативный: когда вы можете определить сопоставления в файле конфигурации, что обеспечивает большую портативность и более легкую интеграцию Manticore в CI/CD, ETL и другие процессы.

Перколяция

Перколяция или постоянный запрос - это когда таблица содержит запросы, а не документы, и поиск выполняется по документам, а не по запросам. Результаты поиска - это запросы, которые удовлетворяют документам. Этот тип поиска полезен для подписок пользователей: если вы подписались, например, на запрос TV > 42 дюйма, то, как только он появится на сайте, вы получите уведомление об этом. Manticore предоставляет эту функциональность, так же как и Elasticsearch. Согласно тестам , которые мы проводили несколько лет назад, пропускная способность этого типа поиска в Manticore значительно выше, чем в Elasticsearch.

Что дальше?

Мы сейчас развиваем проект в следующих направлениях:

  • Замена для Elasticsearch в стеке ELK, чтобы Kibana и Logstash (или альтернативы Opensearch) могли работать с ним без проблем. Мы хотим, чтобы низкая задержка, которую легче достичь с Manticore, была доступна людям для анализа логов. У нас уже есть бета .
  • Безсхемный режим. Когда вы используете Manticore как решение для анализа логов, вам не нужно думать о схемах.
  • Автоматическое шардирование и оркестрация шардов, чтобы вы могли загружать данные в Manticore еще быстрее, и шардов будет распределено в оптимальном порядке для лучшей отказоустойчивости.
  • Дальнейшие оптимизации производительности. Мы просто хотим еще более низкую задержку и большую пропускную способность, чтобы вы могли запускать Manticore на более дешевом оборудовании и сделать Землю зеленее.

Заключения

Итак, в конце концов, что мы имеем? Manticore может быть интересен тем, кто:

  • Заботится о низком времени отклика как на небольших, так и на больших объемах данных,
  • Любит SQL,
  • Хочет что-то проще, чем Elasticsearch, чтобы быстрее интегрировать поиск в свое приложение,
  • Хочет что-то более легковесное, что быстро запускается,
  • Заботится о использовании чисто открытого программного обеспечения.

Мы продолжаем!

⭐⭐⭐ Ваша звезда на GitHub поддерживает проект и заставляет нас думать, что мы на правильном пути!⭐⭐⭐

Спасибо!

Установить Manticore Search

Установить Manticore Search