Opensearch json хранилище полезной нагрузки для поиска: текст против объекта - оптимизация для различных схемы.JAVA

Программисты JAVA общаются здесь
Anonymous
Opensearch json хранилище полезной нагрузки для поиска: текст против объекта - оптимизация для различных схемы.

Сообщение Anonymous »

Я разрабатываю приложение Spring Boot, давайте назовем его ProductsearchIndexer , которое потребляет данные о продукте от KAFKA. Каждое сообщение Kafka включает в себя поле jsonnode , которое я теперь называю как Productschemajson . Этот продукт chemajson содержит большой, сложный объект JSON, который добросовестно придерживается спецификации продукта Schema.org. Хотя это стандарт, точная структура и наличие полей в этих данных могут значительно варьироваться от одного продукта к другому. У сущности в моем приложении, который представляет документ, который будет индексирован, имеет продукты chemaemajson в качестве jsonnode .
Текущий подход и задача:
В настоящее время я пытаюсь отобразить этот продукт -кремсон в Opensearch As Fieldpe.object. Чтобы обработать преобразование от JSONNODE в внутреннее представление объекта OpenSearch (особенно с учетом нюансов того, как Spring Data ElasticSearch взаимодействует со вложенными структурами JSON и переменным характером Schema.org/product Data), я реализовал пользовательский конвертер, который я назову ProductshemajsonConverter для Clarity. ProductschemajsonConverter не последовательно работает для всех входящих сообщений kafka . Некоторые Productschemajson Полезное индекс успешно, в то время как другие терпят неудачу в процессе преобразования или индексации, что приводит к разочаровывающим несоответствиям данных в моем индексе OpenSearch. Это указывает на хрупкость в текущем подходе FieldType.object в сочетании с моим пользовательским преобразователем, вероятно, из -за внутренней изменчивости и сложности схемы. Productschemajson . Вместо этого я запрошу другие конкретные поля высшего уровня, которые я извлекаю из данных продукта (например, идентификаторы типа продукта, спортивные идентификаторы, локали, SKU-код). Само поле продуктов ProductsChemajson должно быть возвращено только в виде полной капли JSON в рамках результатов поиска , сохраняя свою первоначальную структуру. Мне не нужно выполнять какие -либо агрегации, фильтры или специфические поиски в полевых условиях в Productschemajson, используя запрос OpenSearch DSL. Документы), которые должны храниться только и возвращать как из-за Opensearch, и с учетом текущей ненадежности моего подхода FieldType.object и ProductsChemajsonConverter , какова лучшая практика для сопоставления этого поля в OpenSearch:

Код: Выделить всё

FieldType.Keyword
или fieldtype.text (отображение продуктов Chodemajson в качестве одной строки JSON Blob)? Даже когда поле Entity представляет собой jsonNode и сопоставлен с текстом или ключевым словом введите в тип OpenSearch, Spring Data Elasticsearch по -прежнему должен знать, как сериализовать и десериализировать его. Это часто означает еще один пользовательский преобразователь для записи в OpenSearch и конвертер для чтения из него. Это разъясняет, почему простое преобразование строки не обрабатывается автоматически с помощью Spring Data Elasticsearch, когда тип объекта jsonnode. < /P>

Код: Выделить всё

FieldType.Object
(попытка отобразить продукты chemajson в качестве структурированного объекта, как я сейчас делаю)? и менее склонны к индексации неудач при работе с различными и сложными полезными нагрузками jsonNode, особенно теми, которые соответствуют гибкому стандарту, таким как Schema.org/product?
Индексирование. Productschemajson? Подходы, какова типичная сложность, связанная с написанием и поддержанием необходимых пользовательских преобразователей для Spring Data Elasticsearch для обработки полей jsonNode для написания (индексация) и чтения (поиск)? данные. Любой подход делает этот процесс повторного индексации по своей природе проще или более сложным?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... mizing-for

Вернуться в «JAVA»