Quantcast
Viewing all articles
Browse latest Browse all 1318

Elasticsearch - поисковая система - [Документация/Статьи]

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

Устанока

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

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

nano /etc/sysctl.conf

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

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

Установка плагинов

elasticsearch-HQ

$ plugin -install royrusso/elasticsearch-HQ

elasticsearch-head

$ plugin -install mobz/elasticsearch-head

elasticsearch-gui

$ plugin install jettro/elasticsearch-gui 

Проверка работоспособности сервера

curl -XGET http://localhost:9200/_nodes/?pretty

Snapshot / Dump

curl -XPUT 'http://localhost:9200/_snapshot/backup' -d '{
    "type": "fs",
    "settings": {
        "location": "/usr/local/var/elasticsearch/snapshot",
        "compress": true
    }
}'
  • где:
    • backup - название репозитория
    • /usr/local/var/elasticsearch/snapshot - папка с содержанием самого репозитория
      drwxrwxr-x 6 mirocow 204 ноя 30 23:41 ./
      drwxr-xr-x 6 mirocow 204 ноя 30 23:34 ../
      -rwxr-xr-x 1 mirocow  27 ноя 19 18:18 index*
      drwxr-xr-x 4 mirocow 136 ноя 19 18:17 indices/
      -rwxr-xr-x 1 mirocow  61 ноя 19 18:17 metadata-dump*
      -rwxr-xr-x 1 mirocow 187 ноя 19 18:18 snapshot-dump*

Восстановление / Restore

Настройка

curl -XPUT 'http://localhost:9200/_snapshot/backup' -d '{
    "type": "fs",
    "settings": {
        "location": "/usr/local/var/elasticsearch/snapshot",
        "compress": true
    }
}'
  • где:
    • backup - название репозитория
    • /usr/local/var/elasticsearch/snapshot - папка с содержанием самого репозитория

Проверка

curl -XPOST http://localhost:9200/_snapshot/backup/snapshot/_verify

Восстановление

curl -XPOST http://localhost:9200/_snapshot/backup/snapshot/_restore

Запрос поиска

curl -XGET http://localhost:9200/1vse/product/_search/ -d '{
  "size": 10,
  "query": {
    "bool": {
      "should": [
        {
          "function_score": {
            "weight": 100,
            "query": {
              "match": {
                "product.title": "samsung"
              }
            }
          }
        },
        {
          "function_score": {
            "weight": 80,
            "query": {
              "match_phrase_prefix": {
                "product.title": "samsung"
              }
            }
          }
        }
      ]
    }
  }
}'
  • где:
    • 1vse - название БД
    • product.title - название таблицы

Команды

curl -XGET http://localhost:9200/_cluster/state
curl -XGET http://localhost:9200/_status
curl -XGET http://localhost:9200/_nodes/stats?all=true
curl -XGET http://localhost:9200/_nodes

Ошибки / Errors

  • snapshot_missing_exception:
    {"type": "no_such_file_exception","reason/usr/local/var/elasticsearch/snapshot/snap-snapshot.dat"}
  • SnapshotMissingException:
    {"error":"SnapshotMissingException[[backup:snapshot] is missing]; nested: FileNotFoundException[/usr/local/var/elasticsearch/snapshot/snapshot-snapshot (No such file or directory)]; ","status":404}

    snapshot не найден, так как дамп создавался с отличным названием снапшота от snapshot

Создание индексов

Фильтры

Фильтр worddelimiter

Фильтр worddelimiter разбивает слова на несколько частей. Небольшой пример: представьте, что вы допустили опечатку в предложении “To be or not to be.That is the question”. Если вы обратите внимание, то заметите отсутствие пробела после точки. Без этого фильтра Elasticsearch проиндексирует “be.That” как одно слово - “bethat”. При помощи этого фильтра мы указываем ему индексировать эти слова по отдельности - “be” и “that”.

Фильтр stopwords

Фильтр stopwords состоит из списка слов запрещенных к индексированию. Например он исключает такие слова, как “and”, “a”, “the”, “to” и т.д. Конечно этот список уникален для каждого языка, но существует довольно много заготовок, которые вы можете использовать.

Фильтр snowball

Фильтр snowball используется для группировки слов по их основе. Фильтр применяет набор правил для правильного определения основы слова. Это означает, что разные настройки могут выдавать разные результаты. Например слова “indexing”, “indexable”, “indexes”, “indexation” и т.д. получать основу “index”. Хотелось бы отметить, что вы получите результат “Make my string indexable”, запросив “Indexing string”.

Фильтр elison

Фильтр elison имеет большее значения для некоторых языков (например французский) и не так важен для других (например английский). Он исключает маловажные слова перед индексированием, например “j’attends que tu m’appelles” (Я жду вашего звонка) проиндексируется как “attends que tu appelles” (наконце слова “que” и “tu” будут исключены фильтром stopwords). Как вы видите слова “j’” и “m’” (Я) были удалены из-за настройки фильтра elison.

Лексеры

nGram

"min_gram" : "3",
"max_gram" : "20"

Анализаторы

Мапинг

Примеры индексов

            settings:
                index:
                    analysis:
                        analyzer:
                            app_analyzer:
                                type: custom
                                tokenizer: nGram
                                filter   : [stopwords, app_ngram, asciifolding, lowercase, snowball, worddelimiter]
                            app_search_analyzer:
                                type: custom
                                tokenizer: standard
                                filter   : [stopwords, app_ngram, asciifolding, lowercase, snowball, worddelimiter]
                        tokenizer:
                            nGram:
                                type: "nGram"
                                min_gram: 2
                                max_gram: 20
                        filter:
                            snowball:
                                type:     snowball
                                language: English
                            app_ngram:
                                type: "nGram"
                                min_gram: 2
                                max_gram: 20
                            worddelimiter :
                                 type: word_delimiter
                            stopwords:
                                 type:      stop
                                 stopwords: [_french_]
                                 ignore_case : true

Клиенты

Yii2

Документация/Статьи


Viewing all articles
Browse latest Browse all 1318

Trending Articles


Vimeo 10.7.0 by Vimeo.com, Inc.


Girasoles para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Tagalog Quotes About Crush – Tagalog Love Quotes


OFW quotes : Pinoy Tagalog Quotes


Long Distance Relationship Tagalog Love Quotes


Tropa Quotes


Best Crush Tagalog Quotes And Sayings 2017


“BAHAY KUBO HUGOT”


FORECLOSURE OF REAL ESTATE MORTGAGE


Pokemon para colorear


Sapos para colorear


Tagalog Love Quotes – Nagmamahal


Break up Quotes Tagalog Love Quote – Broken Hearted Quotes Tagalog


Patama Quotes : Tagalog Inspirational Quotes


Tagalog Quotes To Move on and More Love Love Love Quotes


5 Tagalog Relationship Rules


Long distances monthsary message tagalog


Re:Mutton Pies (lleechef)


Vimeo 10.7.1 by Vimeo.com, Inc.