Вот проиндексированые атрибуты
'title' => string 'Курица с фасолью и баклажанами '
'content' => string '<p>Филе нарежьте на небольшие кусочки и замаринуйте на время нарезки и обжарки овощей.</p>'
'ingredients' => [1,2,3,4,5]
как мне получить выборку в ингредиентов 1, 2 3 вот так ?
'filtered' => [
'filter' => [
'term' => [
'ingredients' => [
1,2,3
]
]
],
правильно ?
В целом правильно, если у вас первая версия Elasticsearch и нужно выбрать все рецепты в которых совпал хоть один ингредиент 1 или 2 или 3. Начиная со второй filtred объявлен deprecated.
Для второй и пятой версии запрос будет следующим [doc]:
{
"query" : {
"constant_score" : {
"filter" : {
"terms" : {
"ingredients" : [1, 2, 3]
}
}
}
}
}
В любом случае конструкция "terms" : {"ingredients" : [1, 2, 3]}
будет работать, неважно в каком контексте. Ссылка на документацию.
Если вам нужна выдача, в которой должны присутствовать все указанные ингредиенты, то нужно использовать bool/must или bool/should вместе с minimum_should_match.
{
"query": {
"bool": {
"must": [
{
"term": {
"ingredients": 1
}
},
{
"term": {
"ingredients": 2
}
},
{
"term": {
"ingredients": 3
}
}
]
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хочу делать всё правильно, потому интересуюсьЕсть контроллер SiteController с actionRegistration, который отображает страницу регистрации
Есть функции, которые проверяют начинается или заканчивается ли строка другой подстрокой: