Мы собираемся создать пример Elastic Search с NodeJs и пользовательскими сопоставлениями.

Установка

Во-первых, давайте установим эластичный поиск с помощью brew.

brew update
brew install elasticsearch

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

Наконец, установите плагин Sense для Chrome, чтобы протестировать эластичные поисковые команды.

Пример

Вот несколько примеров того, чего мы хотим добиться во время поиска.

В нашем примере данными будет набор продуктовых продуктов, мы собираемся определить следующее сопоставление для индекса продукта.

PUT /elastic_products
{
 “mappings”: {
   “product”: {
     “properties”: {
       “name”: {
          “type”: “string”,
          “analyzer”: “english”
        },
       “price”: {
          “type”: “string”,
          “index”: “not_analyzed”
       },
       “category”: {
          “type”: “string”,
          “analyzer”: “english”
       },
       “subCategory”: {
          “type”: “string”,
          “analyzer”: “english”
       }
   }
  }
 }
}

Наши данные будут анализироваться только по имени, категории и подкатегории, и мы используем анализатор на английском языке.

С вашего сервера NodeJS установите пакет elasticsearch npm.

npm install elasticsearch

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

function(req, res, next){
  var textToSearch = req.params.text + “~”;
  elastic.search({
    type:’products’,
    q: textToSearch,
    size: 5
  })
  .then(function(body){
    res.status(200).json(body.hits.hits);
  },
  function (err) {
    res.sendStatus(400);
  });
}

Это позволит осуществлять эластичный поиск и нечеткий поиск наших продуктов (путем поиска по названию, категории или подкатегории).

Дайте знать, если у вас появятся вопросы. Удачного кодирования!