Мы собираемся создать пример 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); }); }
Это позволит осуществлять эластичный поиск и нечеткий поиск наших продуктов (путем поиска по названию, категории или подкатегории).
Дайте знать, если у вас появятся вопросы. Удачного кодирования!