Как получить результаты эластичного поиска из одного столбца с разными значениями одновременно? - PullRequest
0 голосов
/ 15 апреля 2019

Я использую REST API с использованием PHP для извлечения данных из поиска Elastic со следующим кодом

$params = [
    'index' => $search_index,
    'type' => $search_type,
    'from' => $_POST["from"],
    'size' => $_POST["fetch"],
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    [ 'match' => [ 'is_validated' => false ] ],
                    [ 'query_string' => [ 'query' => $search_str, 'default_operator' => 'OR' ] ] 
                    ]
                ]
            ]
        ]
    ];

Теперь, это работает отлично и дает мне желаемые результаты.

Данные, которые возвращаются из ES, имеют один столбец «result_source» и имеют предопределенные значения, такие как CNN, BBC или YouTube и т. Д.

Что мне нужно, так это то, что я хочу отфильтровать результаты по столбцу «result_source» таким образом, чтобы я мог получать результаты только с нужной мне опцией. Например, я хочу, чтобы результаты имели значение «result_source» только «YouTube» или только «BBC & CNN» или только «CNN или YouTube» и т. Д.

Я уже пробовал опцию «Следует», но она также возвращает данные с другими значениями, которые мне не нужны. Не уверен, как пропустить эти значения столбца "result_source" при получении результатов из ES.

Любая помощь в этом будет оценена.

Спасибо

1 Ответ

0 голосов
/ 16 апреля 2019

Решено !!

Я отвечаю на свой вопрос, потому что нашел решение для него.Может быть, это может помочь кому-то еще в будущем.

Если кто-то ищет решение поиска в поле / столбце поиска Elastic, вот что можно сделать.

[ 'query_string' => [ 'query' => $search_str.'(result_source:CNN OR result_source:BBC)', 'default_operator' => 'OR' ] ]

«result_source» - это фактически имя поля / столбца ES, к которому применяется фильтр для возврата результатов, имеющих result_source = BBC или result_source = CNN.

Это фактически решило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...