Реализуйте поиск по тегам с эластичным поиском приложений
Контекст
Я создаю веб-сайт для местной коммуны, у меня есть список «контактных лиц», на которые, помимо прочего, возложены обязанности.
Пользователи сайта должны иметь возможность искать определенную ответственность, а затем находить человека, которому поручено это направление работы.
Проблема
В отличие от собственного эластичного поиска, платформа поиска приложений предоставляет только некоторые очень простые типы данных. Я решил сохранить обязанности в виде списка значений, разделенных запятыми.
Пример документа "контактное лицо"
{
"firstname": "John",
"lastname": "Doe",
"responsibilities": "Fire safety, Budgeting, Weddings"
}
Когда я использую панель поиска, напечатанный текст будет отображать все поле
Очевидно, что это не очень хороший опыт. Другая проблема заключается в том, что я не могу осмысленно фасетировать и фильтровать значения.
Что я пробовал
Один из возможных подходов - создать несколько полей «ответственности», например:
{
"responsibility_1": "Fire safety",
"responsibility_2": "Budgeting",
...
}
Но это кажется довольно грязным, требует от меня жесткого ограничения и все же не решает проблему фасетирования.
Еще я подумал об отключении
Как я могу реализовать такую «пометку»?или мне не повезло, когда дело доходит до такого рода задач и нужна родная резинка?
Мне нужен какой-то тип поля «массив», но поиск приложений не реализует такой тип. Я привязан к платформе поиска приложений, и переход на собственный эластичный поиск будет означать, что мне потребуется довольно много времени.
1 ответ
Вам нужно создать такой массив значений:
{
"firstname": "John",
"lastname": "Doe",
"responsibilities": ["Fire safety", "Budgeting", "Weddings"]
}
Массивы поддерживаются в appsearch, как указано в документации.
3. Arrays are supported