Как получить правильный подузел сластиком поиска - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь получить определенные c части данных из указанного c документа. Документ содержит информацию о продукте. Это всего лишь небольшой фрагмент документа, чтобы объяснить его лучше.

"_source": {
    "product": {
        "code": "AM109",
        "stuff": "98989",
        "languages": [
            {
                "language": "en",
                "labels": {
                    "name": "Fusce nulla augue",
                    "description": "Cras ultricies diam vel orci feugiat ornare. Nulla convallis ligula quis fringilla suscipit. Proin malesuada ligula enim, sit amet semper lorem imperdiet in."
                }
            },
            {
                "language": "es",
                "labels": {
                    "name": "Aliquam ut odio quam",
                    "description": "Nulla pulvinar tortor eu ex vestibulum, nec dictum diam tristique. Pellentesque vitae nibh diam. In id purus at sapien eleifend pulvinar non at velit."
                }
            }
    }
}

Документ содержит разную информацию для разных стран и ярлыки для разных языков. Для объяснения я использую ярлыки. Мне нужно получить информацию о правильном продукте на основе кода (product.code), а для языков он должен возвращать только те ярлыки на том языке, который был запрошен. Например, если запрашивается язык es:

"_source": {
    "product": {
        "code": "AM109",
        "stuff": "98989",
        "languages": [
            {
                "language": "es",
                "labels": {
                    "name": "Aliquam ut odio quam",
                    "description": "Nulla pulvinar tortor eu ex vestibulum, nec dictum diam tristique. Pellentesque vitae nibh diam. In id purus at sapien eleifend pulvinar non at velit."
                }
            }
    }
}

Я пробовал это с вложенными опциями и фильтрами, но не могу получить верные данные.

Это существующая система, поэтому я не могу вносить изменения в структуру, но я могу изменить отображение при необходимости и заново заполнить индекс.

Кто может мне помочь с этим?

1 Ответ

0 голосов
/ 21 февраля 2020

Поскольку все документы содержат информацию обо всех языках, и вы выполняете поиск только на одном языке в данный момент времени, я предлагаю следующий подход:

  1. Храните ваши документы с указанием языка c индексы (преимущество : те же имена полей)
  2. Вы можете отправлять свои документы всегда по одному и тому же индексу, но при этом определяете конвейер загрузки, который добавляет суффикс c с указанием языка, такой как "_en", к полю _index, чтобы ваш документ был перенаправлен / сохранен на языке c index
  3. Настройте запрос так, чтобы он запрашивал только индекс, содержащий язык

Если последний шаг невозможен, Вы можете определить псевдоним, указывающий на все языковые индексы c и в вашем фильтре запросов на поле, содержащее код языка

...