{{tag>search indexer elasticsearch indexer}}

====== Elasticsearch - поисковая система ======

===== Документация =====

  * https://www.elastic.co/guide/en/elasticsearch/reference/7.0/index.html
  * https://www.elastic.co/guide/en/elasticsearch/reference/6.8/index.html
  * https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html
===== Установка =====

  * [[:system:elasticsearch:2.4.x]]
  * [[:system:elasticsearch:5.x.x]]

==== Установка и настройка Elasticsearch ====

  * Установите максимальный размер открытых дескрипторов файла для пользователя от 32k до 64k

nano /etc/sysctl.conf
<code>
vm.max_map_count = 262144
</code>

  * Если возможно, отключите свопинг памяти для процессов Elasticsearch. Обратите внимание, что в виртуальных средах это может привести к неожиданным результатам.
  * Установите значение -Xms равным -Xmx (то же самое что установить значение переменной среды ES_HEAP_SIZE).
  * Оставьте некоторое количество памяти, чтобы кеш операционной системы мог использовать его для Lucene.

<note important>Elasticsearch JVM не должен занимать больше половины всего объема памяти.</note>

nano /etc/elasticsearch/jvm.options
<code>
-Xms2g
-Xmx2g
</code>
===== Проверка работоспособности сервера =====

<code bash>
$ curl -XGET http://localhost:9200/_stats/?pretty
$ curl -XGET http://localhost:9200/_nodes/?pretty
$ curl --silent -XGET "http://localhost:9200/_snapshot/_all"
</code>

<code bash>
$ curl --silent -XGET  "http://localhost:9200/_cat/nodes?pretty"
mbp-mirocow 192.168.1.147 11 78 6.88 d * Mirocow
</code>

===== Статьи / Документация / Примеры индексов / Примеры запросов =====

==== Документация ====

=== Уроки ===

  * [[https://codedzen.ru/elasticsearch-vvedeniye-1-1-osnovnyye-ponyatiya|Elasticsearch Введение — 1.1 Основные понятия]]
  * [[https://codedzen.ru/elasticsearch-vvedeniye-1-2-vzaimodeystviye/|Elasticsearch Введение — 1.2 Взаимодействие]]
  * [[https://codedzen.ru/elasticsearch-vvedeniye-1-3-kak-rabotayet-poisk|Elasticsearch Введение — 1.3 Как работает поиск?]]
  * [[https://codedzen.ru/elasticsearch-vvedeniye-1-4-masshtabiruyemost-i-dost|Elasticsearch Введение — 1.4 Масштабируемость и доступность]]
  * [[https://codedzen.ru/elasticsearch-urok-3-1-mapping-skhema-dokumentov/|Elasticsearch — Урок 3.1 Mapping: схема документов]]
  * [[https://codedzen.ru/elasticsearch-urok-3-2-raznitsa-mezhdu-polnotekstov/|Elasticsearch — Урок 3.2 Разница между полнотекстовым поиском и точным соответствием]]
  * [[https://codedzen.ru/elasticsearch-urok-3-3-osnovnyye-tipy-dannykh/|Elasticsearch — Урок 3.3 Основные типы данных]]
  * [[https://codedzen.ru/elasticsearch-urok-3-4-slozhnye-tipy-dannyh|Elasticsearch — Урок 3.4 Сложные типы данных]]
  * [[https://codedzen.ru/elasticsearch-urok-3-5-tip-geodannyye|Elasticsearch — Урок 3.5 Тип геоданные]]
  * [[https://codedzen.ru/elasticsearch-urok-3-6-spetsializirovannyye-tipy-da|Elasticsearch — Урок 3.6 Специализированные типы данных (IP, Completion, Percolator)]]
  * [[https://codedzen.ru/elasticsearch-urok-3-7-mapping-odnogo-i-togo-zhe-pol|Elasticsearch — Урок 3.7 Маппинг одного и того же поля с разными типами данных (fieldsmapping)]]
  * [[https://codedzen.ru/elasticsearch-urok-3-8-otnosheniya-mezhdu-dokumentam|Elasticsearch — Урок 3.8 Отношения между документами (_parent, has_child/has_parent, Nested)]] :!: запросы к родительским-дочерним типам документов очень дороги
  * [[https://codedzen.ru/elasticsearch-urok-4-2-obnovleniye-dannykh|Elasticsearch — Урок 4.2 Обновление данных]]
  * [[https://codedzen.ru/elasticsearch-urok-4-3-konkurentsiya-pri-obnovlenii|Elasticsearch — Урок 4.3 Конкуренция при обновлении]]
  * [[https://codedzen.ru/category/uroki/elasticsearch/page/2/|Elasticsearch — Урок 5.1 Массовые операции (_bulk)]]
  * [[https://codedzen.ru/elasticsearch-urok-5-2-reindex-api/|Elasticsearch — Урок 5.2 Reindex API]]
  * [[https://codedzen.ru/elasticsearch-urok-5-3-ingest-node|Elasticsearch — Урок 5.3 Ingest Node (Logstash)]]
  * [[https://codedzen.ru/elasticsearch-urok-5-4-organizatsiya-vashikh-dannykh/|Elasticsearch — Урок 5.4 Организация данных]]
  * [[https://codedzen.ru/elasticsearch-urok-5-5-shrink-api/|Elasticsearch — Урок 5.5 Shrink API]]
  * [[https://codedzen.ru/elasticsearch-urok-6-1-tipy-zaprosov/|Elasticsearch — Урок 6.1 Типы запросов]]

=== Статьи / Дискуссии ===

  * [[system:elasticsearch:index-types]]
  * [[system:elasticsearch:dump-restore]]
  * [[system:elasticsearch:requests]]
  * https://qbox.io/blog/tag/elasticsearch
  * https://medium.com/tag/elasticsearch
  * https://discuss.elastic.co/c/in-your-native-tongue/russian
  * [[https://habrahabr.ru/search/?target_type=posts&q=%5Belasticsearch%5D&order_by=date|Статьи]]
  * [[https://habrahabr.ru/post/320390/|Хайлайтинг больших текстовых полей в ElasticSearch]]



==== Индексы ====

  * [[system:elasticsearch:mapping]]

==== Запросы ====

  * https://www.found.no/play/#


==== Примеры ====

  * [[system:elasticsearch:exaples:example-1]]
  * [[system:elasticsearch:exaples:example-2]]
  * [[system:elasticsearch:exaples:example-3]]
  * [[system:elasticsearch:exaples:example-4]] 
  * [[system:elasticsearch:exaples:example-5]] 
  * [[system:elasticsearch:exaples:example-6]] 
  * [[system:elasticsearch:exaples:example-7]] 


==== Библиотеки ====

  * https://github.com/dadoonet/fscrawler (https://habr.com/company/digdes/blog/351002/)
  * https://github.com/elastic/elasticsearch
  * https://github.com/elastic/elasticsearch-x-pack-php

=== Расширения для Frameworks ===

== Yii2 framework ==

  * https://github.com/Mirocow/yii2-elasticsearch
  * https://github.com/Mirocow/yii2-elasticsearch-log
  * https://github.com/Mirocow/yii2-elasticsearch-debug

== PHP ==

  * https://github.com/dontdrinkandroot/gitki.php
  * https://github.com/phalcon/forum

==== Программное обеспечение ====

  * [[system:elasticsearch:logstash]]
  * [[system:elasticsearch:kibana]]
  * **Beats**
    * [[system:elasticsearch:filebeat]]
    * [[system:elasticsearch:metricbeat]]
    * [[system:elasticsearch:packetbeat]]
    * [[system:elasticsearch:winlogbeat]]
    * [[system:elasticsearch:auditbeat]]
    * [[system:elasticsearch:heartbeat]]
