Рубрики
Без рубрики

Руководство для elasticsearch

Elastic – это поисковый сервер на основе JSON на основе Lucene и предоставляет распределенную полнотекстовую поисковую систему, доступную через реставральный интерфейс. Вот руководство для начинающих, как начать с упругими.

Автор оригинала: Ashish.

Вступление

Elastic – это поисковый сервер на основе Apache Lucene и обеспечивает распределенную полнотекстовую поисковую систему, доступную через постоянный интерфейс.

Elasticsearch – это схема меньше, а использует JSON вместо XML. Это открытый источник и встроенный в Java, что означает, что вы можете запустить ElaSticsearch на любой платформе, так как Java является независимой платформой.

Elasticsearch – это магазин на основе документов. Это альтернатива традиционным магазинам документов, поэтому его можно использовать для замены других документов, таких как Mongodb или RavendB.

Быстро и масштабируется

Elasticsearch невероятно быстр, когда дело доходит до поиска, поэтому, если ваш текущий поиск документов не дает вам производительность, а не масштабируется, а также хотелось бы, чтобы ELASTICSearch – значительно масштабируемый.

Терминология

Для всех тех, кто приезжает из традиционных баз данных MySQL, вот таблица, сравнивающая терминологию ELASTICSearch с традиционной терминологией реляционной базы данных:

Таблица сравнения терминологии.

Индекс База данных
Тип Таблица
Документ Строка

Как настроить Elasticsearch

Чтобы начать, вам нужно скачать Elasticsearch из Эта ссылка и расстегните Zipped файл в папке, где вы хотите разместить Elasticsearch.

Чтобы запустить это, откройте командный окно, перейдите в папку BIN, и введите elasticsearch запустить его. Убедитесь, что у вас есть Java_home определена переменная среды.

Взаимодействие с Elasticsearch

Чтобы проверить, правильно ли установлены Elasticsearch IARK, используйте следующий URL в браузере:

http://localhost:9200/

Это должно показать вам вывод, например:

{
  "name" : "Domo",
  "cluster_name" : "elasticsearch_root",
  "version" : {
    "number" : "2.2.0",
    "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe",
    "build_timestamp" : "2016-01-27T13:32:39Z",
    "build_snapshot" : false,
    "lucene_version" : "5.4.1"
  },
  "tagline" : "You Know, for Search"
}

После начала Elasticsearch вы можете использовать любой клиент API для отдыха, например почтальон или Fiddler Отказ

Restful API используются для взаимодействия с Elasticsearch. Общий шаблон, используемый для создания спокойного вызова, как показано ниже:

REST API Format : http://host:port/[index]/[type]/[_action/id]

Используемые методы http: get, post, put, delete

  • Чтобы получить список всех доступных индексов в вашем elasticsearch, используйте следующий URL:
http://localhost:9200/_cat/indices
  • Чтобы получить статус индекса (скажем, компания), используйте следующий URL:
http://localhost:9200/company?pretty

Первая часть ( localhost ) обозначает хозяин (сервер), где размещен ваш elasticsearch, а по умолчанию порт 9200.

http://localhost:9200/company/employee/_search

Вторая часть ( Компания ) – индекс последовал ( сотрудник ) Тип Имя, а затем (_ Поиск ) Действие Отказ

Elasticsearch позволяет использовать HTTP-методы, такие как Get, Posts, DealEts и ставит наряду с полезной нагрузкой, которая будет в структуре JSON.

В этом руководстве я предполагаю, что вы используете клиент OST API почтальон или Fiddler Чтобы запустить ниже упомянутые спокойные звонки.

Давайте посмотрим, как создать индекс, вставьте данные в него, а затем извлеките данные от elasticsearch.

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

http://localhost:9200/company

PUT
{
  "settings": {
    "index": {
       "number_of_shards": 1,
       "number_of_replicas": 1
    },
    "analysis": {
      "analyzer": {
        "analyzer-name": {
          "type": "custom",
          "tokenizer": "keyword",
          "filter": "lowercase"
        }
      }
    },
    "mappings": {
      "employee": {
        "properties": {
          "age": {
            "type": "long"
          },
          "experience": {
            "type": "long"		
          },
          "name": {
            "type": "string",
            "analyzer": "analyzer-name"
          }
        }
      }
    }
  }  
}

Как только вы запустите вышеуказанную команду, это ответ получен:

{
  "acknowledged": true
}

Вышеуказанная команда создает индекс с именем Компания С типом именем сотрудник с полями возраст , Опыт и Имя Отказ

Что такое анализаторы

Elasticsearch – это текстовая поисковая система на основе Apache Lucene. Данные, которые будут проиндексированы, обрабатываются в соответствии с требованиями до расщепления на термины. Этот процесс называется анализом и выполняется анализаторами.

Процесс анализа включает в себя:

  1. Разделение текста в токены
  2. Стандартизация этих токенов, поэтому они становятся поиском.

Анализ состоит из трех функций:

  1. Фильтрация символов
  2. Токенизация и
  3. Токен фильтры

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

В вышеупомянутом индексе мы добавили следующий анализатор:

 "analysis": {
  "analyzer": {
    "analyzer-name": {
      "type": "custom",
      "tokenizer": "keyword",
      "filter": "lowercase"
    }
  }
}

Здесь мы создали пользовательский анализатор с именем «Analyzer Name», со следующими компонентами:

  1. «Тип»: «Пользовательский» Анализатор типа Пользовательские Позволяет объединить токенизатор с нулевым или более токенным фильтрами токена и ноль или более шарных фильтров. Поскольку в вышеуказанном индексе нет фильтра символов, анализатор был определен с помощью таможенного типа.

  2. «Токенизатор»: «Ключевое слово» Этот токенизатор излучает весь ввод как один вывод.

  3. «Фильтр»: «строчные» Жизненный фильтр преобразует все токены, входящие в него в строчные.

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

Нам нужно передавать документ в виде объекта JSON в качестве параметра данных при создании вызова HTTP API.

http://localhost:9200/company/employee/?_create
POST
{
  "name": "Andrew",
  "age" : 45,
  "experience" : 10
}

Ответ:

{
  "_index": "company",
  "_type": "employee",
  "_id": "AVM8D42POa82oxyTa_Pu",
  "_version": 1,
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "created": true
}

Таким образом, мы можем вставить один документ за раз. Для того, чтобы вставить несколько документов, мы будем использовать объемную API elasticsearch.

Извлечение данных

Чтобы прочитать все записи типа в пределах индекса, используйте следующие команды с методом Get HTTP:

http://localhost:9200/company/employee/_search

http://localhost:9200/vehicles/car/_search

http://localhost:9200/vehicles/bike/_search

http://localhost:9200/vehicles/truck/_search

Вышеуказанные URL-адреса поиск в индексе по имени транспортные средства У, в котором есть типы документов, автомобиль, велосипед и грузовик. Каждый из этих документов будет содержать конкретные данные, связанные с автомобилем, велосипедом и грузовиком соответственно.

  • Можно выполнить множество других операций, использующих aTe apis estearsearceark, например:
  • Проверка состояния Elasticsearch Server,
  • Выполнение CRUD (создайте, чтение, обновление и удаление) и поиск операций против ваших индексов.
  • Выполнять операции, такие как пейджинг, сортировка, фильтрация, сценария, агрегаты, агрегации и т. Д.

Получение данных с условным поиском

  • Получить все документы: Вышеупомянутый URL можно переписать с помощью match_all Параметр для возврата всех документов A Тип в пределах индекс Отказ

Большинство остальных клиентов (например, почтальон) не принимают тело с ПОЛУЧАТЬ метод, так что вы можете использовать СТАВИТЬ вместо. Я показал примеры с ПОЛУЧАТЬ метод.

http://localhost:9200/company/employee/_search
GET 
{
  "query": { 
    "match_all": {}
  }
}

Ответ:

{
  "took":4,
  "timed_out":false,
  "_shards":{
    "total":5,
    "successful":5,
    "failed":0
  },
  "hits":{
    "total":1,
    "max_score":1.0,
    "hits":[
      {
        "_index":"company",
        "_type":"employee",
        "_id":"AVM8D42POa82oxyTa_Pu",
        "_score":1.0,"
        _source":{
          "name": "Andrew",
          "age" : 45,
          "experience" : 10
        }
      }
    ]
  }
}
  • Получить всех сотрудников с определенным именем: Чтобы получить все сотрудники с именем «Andrew», вы можете использовать параметр запроса и указать состояние внутри него.
http://localhost:9200/company/employee/_search
GET 
{
  "query": {
    "match": {
      "name": "Andrew"
    }
  }
}

Ответ:

{
  "took":7,
  "timed_out":false,
  "_shards":{
    "total":5,
    "successful":5,
    "failed":0
  },
  "hits":{
    "total":1,
    "max_score":0.30685282,
    "hits":[
      {
        "_index":"company",
        "_type":"employee",
        "_id":"AVM8D42POa82oxyTa_Pu",
        "_score":0.30685282,"
        _source":{
          "name": "Andrew",
          "age" : 45,
          "experience" : 10
        }
      }
    ]
  }
}
  • Вот как привлечь всех сотрудников с возрастом больше, чем число :
http://localhost:9200/company/employee/_search
GET 
{
  "query": {
    "range": { 
      "age": { "gte":  35 }
    }
  }
}

Ответ:

{
  "took": 3,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": 1,
    "hits":[{
      "_index":"company",
      "_type":"employee",
      "_id":"AVM8D42POa82oxyTa_Pu",
      "_score":0.30685282,
      "_source":{
        "name": "Andrew",
        "age" : 45,
        "experience" : 10
      }
    }]
  }
}
  • Получить данные с несколькими условиями: Вы также можете объединить несколько пунктов и добавить их в один параметр запроса, например
http://localhost:9200/company/employee/_search
GET
{
  "bool": {
    "must":     { "match": {"name": "Andrew" }},
    "should":   { "range": {"age": { "gte":  35 }}}
  }
}

Ответ:

{
"took":31,
"timed_out":false,
"_shards":{
  "total":5,"successful":5,"failed":0},
  "hits":{
    "total":1,
    "max_score":0.04500804,
    "hits":[{
      "_index":"company",
      "_type":"employee",
      "_id":"AVM8D42POa82oxyTa_Pu",
      "_score":0.04500804,
      "_source":{
        "name": "Andrew",
        "age" : 45,
        "experience" : 10
      }
    }]
  }
}

Резюме

Elasticsearch поможет вам разрешить множество проблем оптимизации поиска в ваших существующих приложениях. Это полезно для предоставления ваших пользователей качественный поиск, а также позволить им найти то, что они действительно ищут.