Начало работы с основами Elasticsearch

Java Elasticsearch

Оригинальный адрес:Начало работы с основами Elasticsearch
адрес блога:www.extlight.com

1. Что такое эластичный поиск

ElasticSearch — это поисковый сервер на базе Lucene. Он предоставляет распределенную многопользовательскую полнотекстовую поисковую систему на основе веб-интерфейса RESTful. Elasticsearch, разработанный на Java и выпущенный с открытым исходным кодом в соответствии с условиями лицензии Apache, в настоящее время является популярной корпоративной поисковой системой. Разработанный для использования в облачных вычислениях, он обеспечивает поиск в реальном времени, стабильный, надежный, быстрый и простой в установке и использовании.

1.1 Основные понятия

Индекс: набор документов с одинаковыми свойствами.

Тип: индекс может определять один или несколько типов, и документы должны принадлежать к типу.

Документ: основная единица данных, которая может быть проиндексирована.

Разделение: каждый индекс имеет несколько сегментов, и каждый сегмент представляет собой индекс Lucene.

Резервное копирование: скопируйте осколок, чтобы завершить его резервное копирование.

Метафора изображения:

В универмаге есть различные товары, такие как книги, ручки, фрукты и так далее. Книги можно разделить на разные категории в зависимости от их содержания, такие как технологии, образование, тревожные рассуждения и т. д. Наиболее известные романы-саспенсы и рассуждения — «Шерлок Холмс», «Прогулка в белую ночь» и так далее.

Универмаг --> База данных ElasticSearch

Книги --> Индекс

Подозрительные рассуждения --> Тип

Путешествие Белой Ночи --> Документация

1.2 Сценарии применения

  • Массивный механизм анализа данных
  • поисковая система сайта
  • база данных

2. Установка и настройка

В этом тесте используется виртуальная машина (Centos7) с ip 192.168.2.41.Рекомендуется использовать версию 7.x.Автор использовал 6.x для запуска службы и сообщал о различных ошибках.

2.1 Среда зависимостей

JDK и NodeJS

2.2 Скачать

авторизоватьсяelasticSearchСкачайте файл с официального сайта.

2.3 Установка

tar -zxvf elasticsearch-5.6.1.tar.gz -C /usr

cd elasticsearch-5.6.1

Каталог файлов elasticsearch выглядит следующим образом:

2.4 Старт

Напоминание о наступлении на яму 1:

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

#增加 es 组
groupadd es    

#增加 es 用户并附加到 es 组
useradd es -g es -p es       

#给目录权限
chown -R es:es elasticsearch-5.6.1    

#使用es用户
su es

Шаг на яме напоминание 2:

По умолчанию Elasticsearch разрешает только локальный доступ, если вам нужен удаленный доступ, вам нужно изменить его файл конфигурации.

vim config/elasticsearch.yml 

# 去掉 network.host 前边的注释,将它的值改成0.0.0.0
network.host: 0.0.0.0

Напоминание о яме 3:

В процессе запуска может появиться сообщение об ошибке в среде Centos. Конкретные решения см. в информации, представленной в конце статьи.

запустить службу

bin/elasticsearch

Доступ через браузерhttp://192.168.2.41:9200, когда появится следующее содержимое, запуск выполнен успешно:

{
  "name" : "OwUwJe-",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "vanzxnpaRumdRKiYic3f5A",
  "version" : {
    "number" : "5.6.1",
    "build_hash" : "667b497",
    "build_date" : "2017-09-14T19:22:05.189Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.1"
  },
  "tagline" : "You Know, for Search"
}

2.5 Установите плагин

доступhttp://192.168.2.41:9200Просмотр эффекта отображения контента не является дружественным, поэтому нам нужно установить плагин с именем elasticsearch-head, чтобы сделать отображение контента более удобным.

авторизоватьсяGitHubсайте, найдите mobz/elasticsearch-head, загрузите его локально.

wget https://github.com/mobz/elasticsearch-head/archive/master.zip

unzip master.zip

cd elasticsearch-head-master

npm install

npm run start

С помощью вышеуказанной команды мы установили плагин elasticsearch-head. Доступ через браузерhttp://192.168.2.41:9100, как показано ниже:

На рисунке мы видим, что плагин elasticsearch-head не подключен к сервису Elasticsearch, поэтому нам также нужно изменить файл конфигурации Elasticsearch:

cd elasticsearch-5.6.1

vim config/elasticsearch.yml

# 在文件末尾添加 2 段配置

http.cors.enabled: true
http.cors.allow-origin: "*"

После сохранения файла разделите 2 программы:


cd elasticsearch-5.6.1

# 后台启动 elasticSearch 服务
bin/elasticsearch -d

cd elasticsearch-head-master

npm run start

Доступ через браузерhttp://192.168.2.41:9100, как показано ниже:

Создать индекс через плагин

Просмотр основного состояния индекса

Этот плагин может напрямую добавлять, удалять, изменять и проверять данные Elasticsearch, поэтому возникают проблемы с безопасностью. Не рекомендуется использовать этот плагин в производственной среде!

3. Используйте

Elasticsearch поддерживает API в стиле RESTFUL.Основной формат API выглядит следующим образом:

http://<ip>:<port>/<索引>/<类型>/<文档id>

3.1 Создание/удаление индексов

Для удобства тестирования мы используем инструмент POSTMAN для выполнения интерфейсных запросов.

Чтобы создать неструктурированный индекс, вам нужно использоватьPUTпросить. Например, создайте индекс с именем book.

воплощать в жизнь:

[PUT] http://192.168.2.41:9200/book

Возвращаемый результат:

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "book"
}

Создайте структурированный индекс, как показано ниже:

Чтобы удалить индекс, вам нужно использоватьDELETEпросить.

воплощать в жизнь:

[DELETE] http://192.168.2.41:9200/book

Возвращаемый результат:

{
    "acknowledged": true
}

3.2 Вставка данных

Вставьте данные указанного ID, нужно использоватьPUTпросить. Как показано ниже:

Для вставки данных без указания ID нужно использоватьPOSTпросить. Как показано ниже:

3.3 Изменить данные

Чтобы изменить данные, вам нужно использоватьPOSTзапрос, а в URL нужно добавить _update

воплощать в жизнь:

[POST] http://192.168.2.41:9200/fruit/apple/1/_update

Параметры запроса (изменить цвет):

{
    "doc": {
        "color": "black"
    }
}

Возвращаемый результат:

{
    "_index": "fruit",
    "_type": "apple",
    "_id": "1",
    "_version": 7,
    "result": "updated",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    }
}

3.4 Удаление данных

Чтобы изменить данные, вам нужно использоватьDELETEпросить.

воплощать в жизнь:

[DELETE] http://192.168.2.41:9200/fruit/apple/1

Возвращаемый результат:

{
    "found": true,
    "_index": "fruit",
    "_type": "apple",
    "_id": "1",
    "_version": 8,
    "result": "deleted",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    }
}

3.5 Поиск данных

Для запроса данных указанного ID необходимо использоватьGETпросить.

воплощать в жизнь:

[GET] http://192.168.2.41:9200/fruit/apple/AV69_4DDdZbC-YBdV-U3

Возвращаемый результат:

{
    "_index": "fruit",
    "_type": "apple",
    "_id": "AV69_4DDdZbC-YBdV-U3",
    "_version": 1,
    "found": true,
    "_source": {
        "color": "green",
        "weight": 1,
        "createTime": "2017-09-26 19:05:26"
    }
}

Условный запрос, нужно использоватьPOSTпросить.

воплощать в жизнь:

[POST] http://192.168.2.41:9200/fruit/apple/_search

Параметры запроса (ищите color="green"):

{
    "query": {
        "match":{
            "color": "green"
        }
    }
}

Возвращаемый результат:

{
    "took": 8,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 0.2876821,
        "hits": [
            {
                "_index": "fruit",
                "_type": "apple",
                "_id": "AV69_4DDdZbC-YBdV-U3",
                "_score": 0.2876821,
                "_source": {
                    "color": "green",
                    "weight": 1,
                    "createTime": "2017-09-26 19:05:26"
                }
            }
        ]
    }
}

использованная литература