Столбцы auto increment
id играют следующие правила в таблицах SQL:
- они являются уникальными идентификаторами строки
- они позволяют связывать строки между таблицами
Для достижения этой цели в эластичном поиске вам не нужно поле auto increment
. Вы можете добавить документ в индекс эластичного поиска, а эластичный поиск добавит к нему уникальный идентификатор.
Для полей JSON используйте просто тип данных объекта .
Существует несколько вариантов настройкиотношение типа SQL join:
- Вы можете поместить
test_results
как nested
объекты в test_request
document - Вы можете использовать объединить тип данных поле для связи
test_results
документы в test_request
документы в том же индексе - Вы можете денормализовать и сохранить каждый
test_result
в одном документе вместе с test_request
. Это нормально, что test_request
будет храниться много раз. Elasticsearch в первую очередь предназначен для поиска.
Какую версию вы выбираете, зависит от вас. Это зависит от того, как вы собираетесь использовать ваши данные, какие запросы вы собираетесь делать. Можете ли вы собрать все test_results
вместе с test_request
и сохранить их с помощью одного вызова, или вам нужно сохранить test_request
и последовательно добавить test_results
?
Последовательное обновление вложенного поля будет означатьпереиндексация всего документа каждый раз. Join datatype
дорого обходится для запроса.
Денормализация добавляет использование пространства, но если число test_results
на запрос невелико, то это, возможно, лучший вариант.