Решение # 1
Есть несколько способов выполнить то, что вы хотите. Наиболее «идиоматическим» c способом было бы предварительно обработать JSON, исходящее из вашего приложения, преобразовав JSON do c, который у вас есть, в список.
EG:
{
"ed_hist1": "Glasgow High School",
"ed_hist2": "Edinburgh University"
}
становится
[
"Glasgow High School",
"Edinburgh University"
]
И тогда ваш документ будет выглядеть следующим образом:
{
"Type": "applicationform",
"Id": 1,
"Name": "Margaret Blenkinsop",
"Email": "JohnB232@myCompany.COM",
"Text": ["Glasgow High School", "Edinburgh University"]
}
После этого вы можете выполнить поиск в поле Text
для ed_hist
, которым вы являетесь поиск и возврат документов, соответствующих вашему запросу et c. Это самое простое решение для вашего случая, но есть и другие способы структурирования ваших данных в зависимости от того, какие вопросы вы хотите задать.
Решение # 2
Вы, кажется, думаете Немного о том, как сохранить исходный документ JSON как текст в поле как часть другого документа. Без дополнительного контекста мне не особенно нравится это решение, но я полагаю, у вас есть свои причины. Для этого второго, не рекомендуемого варианта использования я бы использовал фильтры символов в дополнение к store
, вводящему исходное значение поля. Процесс будет выглядеть следующим образом:
index document
original documented `store`d
custom char filter strips out the unwanted JSON language characters
text indexed
Во время запроса вы можете получить исходное сохраненное значение, но также использовать поиск по «полному тексту» текста, содержащегося в документе JSON после символов. были раздеты. Я действительно верю, что вы можете получить больше от ваших данных, если вы сделаете вариант решения № 1. Разбор HTML для текстового поиска - это хорошая идея для поиска в документах разметки, но разбор JSON не имеет смысла, поскольку JSON - это хлеб с маслом ES, и у вас будет больше инструментов для работы с JSON.
РЕДАКТИРОВАТЬ: я забыл сослаться на документацию store
: https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-store.html
РЕДАКТИРОВАТЬ # 2: Дополнительное примечание поле _source, которое включено по умолчанию: https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-source-field.html Ваш оригинальный документ JSON также находится там бесплатно. Это может вернуть вам исходный документ, отправленный вами в ES, и в то же время предоставить вам более идиоматическую c структуру данных в БД.