В чем заключается использование как ElasticSearch, так и разделенной базы данных Nosql? Нельзя ли использовать Elasticsearch как в качестве базы данных, так и для индексации поиска?
База данных Elasticsearch и NoSql
Ответ 1
Да, вы можете использовать ElasticSearch как источник данных, а также индекс.
По умолчанию каждый документ, который вы отправляете в систему ElasticSearch, является индексом, а также сохраняется исходный документ. Это означает, что всякий раз, когда вы запрашиваете ElasticSearch, вы также можете получить исходный документ JSON, который вы проиндексировали.
Если у вас большие документы и вы хотите получить меньший объем данных, тогда, когда вы можете использовать API сопоставления, чтобы установить "store" в "yes" для определенных полей, а затем используйте клавишу "fields" чтобы вытащить определенные поля, которые вы, возможно, захотите.
В моей системе у меня есть автозаполнение адресов, и я получаю только поле адреса свойства. Вот пример из моей системы:
_search?q=FullAddress:main&fields:FullAddress
Затем, когда пользователь выбирает адрес, я вытягиваю весь документ JSON (вместе с другими).
Примечание:
- Вы не можете делать обновления, как вы можете в SQL (обновите все элементы, соответствующие запросу, чтобы увеличить атрибут, скажем)
- Однако вы можете добавить новый документ и заменить существующий на ID, который хотите обновить. Эластичный поиск увеличивает свойство _version для каждого документа, который может быть использован разработчиком для обеспечения оптимистического concurrency, но он не поддерживает отдельную историю версий каждого документа. Вы можете получить только самую последнюю версию документа.