как разбить результат поиска с помощью эластичного поиска? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть документы в моем эластичном поиске, которые представляют поставщиков, каждый документ является поставщиком, и у каждого поставщика также есть филиалы, это выглядит так:

{
    "id": 1,
    "supplierName": "John Flower Shop",
    "supplierAddress": "107 main st, Los Angeles",
    "branches": [
        {
            "branchId": 11,
            "branchName": "John Flower Shop New York",
            "branchAddress": "34 5th Ave, New York"
        },
        {
            "branchId": 12,
            "branchName": "John Flower Shop Miami",
            "branchAddress": "56 ragnar st, Miami"
        }
    ]
}

В настоящее время я выставил api, чтобы разрешить поиск по полям:supplierName, supplierAddress, branchName и branchAddress.

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

Моя проблема, учитывая приведенный выше пример документа, если вы будете искать «John Flower Shop Miami», ответом будет весь документ, а то, что будет представлено, - это имя поставщика верхнего уровня.

я хочу представить "John Flower Shop Miami", и я не уверен, как понять, какая часть результата влияет на поиск ...

кто-то должен был сделать что-то подобное раньше

1 Ответ

0 голосов
/ 05 февраля 2019

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

Тогда я советую индексировать ваши ветви как вложенные документы .Таким образом, они будут храниться как отдельные документы в вашем индексе.

Вам потребуется изменить синтаксис запроса, чтобы использовать вложенных запросов , что может быть неприятно в a ... но в обмен вы получите функциональность inner_hits.

Это позволит вам узнать, какой поддокумент (вложенный документ) соответствует вашему запросу.

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