@P747

Yii & elasticsearch совпадение по нескольким параметрам?

Добрый день!

Как выполнить запрос по имени (name) и точному соответсвию параметру (parent_id) с null? Сейчас пытаюсь выполнить такие запросы:
query(
                [
                    'bool' => [
                        'should' => [
                            ['match' => ['name' => '{ИМЯ}']],
                        ],
                        'must' => [
                            ['term' => ['type' => '{ТИП}']]
                        ]
                    ]
                ]
            )
//Выводит значения которые совпадают или по "name" или "type"

query(
                [
                    'bool' => [
                        'should' => [
                            ['match' => ['name' => '{ИМЯ}']],
                        ],
                        'must' => [
                            ['term' => ['parent_id' => null]]
                        ]
                    ]
                ]
            )

//Выдает ошибку поиска, но нужно чтобы искал по совпадению "name" и точному "parent_id == null"
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
@P747 Автор вопроса
Разобрался, запрос будет таким:
query(
    [
        'bool' => [
            'must' => [
                'query_string' => ['default_field' => 'name', 'query' => "*$text*"]
            ],
            'must_not' => [
                'exists' => [
                    'field' => 'parent_id',
                ]
            ]
        ]
    ]
)
//Для поиска "нечеткому" значению "name" и нулевого "parent_id"


query(
    [
        'bool' => [
            'must' => [
                ['query_string' => ['default_field' => 'name', 'query' => "*$text*"]],
                ['term' => ['parent_id' => $parentId]],
            ]
        ]
    ]
)
//Для поиска "нечеткому" значению "name" и значению "parent_id"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы