Elasticsearch. Использование фильтров в поиске (Query DSL)
Elasticsearch обеспечивает богатый, гибкий, язык запросов, называемый DSL (domain-specific language) - запрос, который позволяет строить гораздо более сложные, устойчивые запросы.
Команда:
GET /megacorp/employee/_search {
"query" : {
"filtered" : {
"filter" : {
"range" : {
"age" : { "gt" : 20 }
}
},
"query" : {
"match" : {
"last_name" : "smith"
}
}
}
}
}
"filter" : {
"range" : { - диапазонный фильтр
"age" : { "gt" : 20 } - ищем сотрудников по фамилии smith старше 20 лет (параметр - gt)
}
}
CURL:
pretty - возвращает данные в формате JSON и отформатированном виде (с пробелами и табами)
$curl -XPOST 'localhost:9200/megacorp/employee/_search?pretty' -d '
{
"query" :
{
"filtered" :
{
"filter" :
{
"range" :
{
"age" : { "gt" : 20 }
}
},
"query" :
{
"match" : {"last_name" : "smith"}
}
}
}
}'
PHP:
require 'vendor/autoload.php';
$client = Elasticsearch\ClientBuilder::create()->build();
$params = [
'index' => 'megacorp',
'type' => 'employee',
'body' => [
'query' => [
'filtered' => [
'filter' => [
'range' => [
'age' => [
'gt'=> 20
]
]
],
'query' => [
'match' => [
'last_name' => 'smith'
]
],
],
]
]
];
try {
$response = $client->search($params);
} catch (Exception $e) {
var_dump($e->getMessage());
}
print_r($response);
Yii2:
$params = [
'filtered' => [
'filter' => [
'range' => [
'age' => [
'gt'=> 20
]
]
],
'query' => [
'match' => [
'last_name' => 'smith'
]
],
],
];
$model = Megacorp::find()->query($params)->all();
var_dump($model);
Дополнительно
- Elasticsearch. Что такое Elasticsearch и как его установить
- Elasticsearch. Добавление данных (индексация)
- Elasticsearch. Извлечение данных
- Elasticsearch. Поиск, фильтры - Query DSL
- Elasticsearch. Полнотекстовый поиск
- Elasticsearch. Выделение результата поиска
- Elasticsearch. Обновление, удаление документа
Предыдущая часть: Elasticsearch. Извлечение данных
devreadwrite.com



Подборка адаптивных шаблонов для вашей CMS
Статьи по
Как получить и установить HTTPS сертификат на сайта

Комментарии
Комментарии отсутствуют, Вы можете быть первым