Есть запрос:
SELECT * FROM shop_items
WHERE (shop_category
IS NULL) AND (title
NOT LIKE '%Ночник%') AND ((title
LIKE '%мышь%') OR (title
LIKE '%клавиат%')) AND (description
LIKE '%беспровод%') ORDER BY is_top
Ищу по 3 полям: shop_category, title, description
Как построить аналогичный запрос на Elasticsearch?
Если значения полей title и description в индексе разбиты на правильные токены, то можно использовать term. И запрос будет выглядеть примерно так:
{
"sort" : {
"is_top" : {"order" : "asc"}
},
"query": {
"bool" : {
"must" : {
{ "term" : { "description" : "беспровод" } },
{
"bool" : {
"should" : [
{ "term" : { "title" : "мышь" } },
{ "term" : { "title" : "клавиат" } }
]
}
}
},
"must_not" : {
{ "exists" : { "field" : "shop_category" } },
{ "term" : { "title" : "Ночник" } }
}
}
}
}
В противном случае нужно использовать regexp.
Нельзя однозначно составить аналог сложного SQL запроса на Query DSL. Очень разные парадигмы. Elasticsearch не предназначен для LIKE-запросов.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Существует замечательная библиотека Volley, позволяющая сильно упростить работу с сетью при разработке приложений для AndroidВопрос в том, а существует...
android:imeOptions не работает, если MaxLines больше 1Я хочу сделать как в Telegram
Мое приложение выполняет задания в заданное время с помощью cronПользователь может изменять свойства файла, состоящие из конфигурации строк...