[英]Can we use Elastic Search as Backend Data Store by replacing Postgres?
我們使用Postgres存儲和處理應用數據,應用數據主要包含:
所有這些東西都可以和Postgres一起使用,當我正在閱讀一些博客文章時,他們提到我們也可以使用ElasticSearch作為后端數據存儲,而不僅僅是作為搜索服務器,如果我們可以這樣使用,我們可以取代Postgres與ElasticSearch? 我能做到這一點有什么好處,與我的情況相比,與ElasticSearch相比,postgres的優點是什么?
請有人給我一些建議。
逐一回答問題:
- 我們需要在處理之后存儲傳入的請求json。
是和否.ElasticSearch允許存儲JSON對象 。 如果JSON結構事先已知和/或穩定(即JSON中的相同鍵始終具有相同類型),則此方法有效。
默認情況下,映射(即集合的模式)是dynamic
,意味着它允許根據插入的值推斷模式。 假設我們插入此文檔:
{"amount": 1.5} <-- insert succeeds
在嘗試插入這個之后立即:
{"amount": {"value" 1.5, "currency": "EUR"]} <-- insert fails
ES將回復一條錯誤消息:
Current token (START_OBJECT) not numeric, can not use numeric value accessors\n at [Source: org.elasticsearch.common.bytes.BytesReference$MarkSupportingStreamInputWrapper@757a68a8; line: 1, column: 13]
如果你有未知結構的JSON對象,你仍然可以將它們存儲在ES中,可以通過使用類型object
和設置屬性enabled: false
; 但是,這不允許您對此類字段的內容進行任何類型的查詢。
- 我們需要使用Identifier字段搜索特定的JSON,我們為表中的每一行創建一個單獨的列
是。 如果identifier是任意字符串,則可以使用type keyword
字段來完成,如果是integer
,則可以使用整數。
- 對於客戶端,他們可能需要搜索JSON列,我的意思是客戶端想要基於json中的某個鍵值的一個json。
按照1),是和否。 如果JSON模式是已知且嚴格的,則可以完成。 如果JSON結構是任意的,則可以存儲但不可查詢。
雖然我會說ElasticSearch不適合你的情況,但有些人為ElasticSearch制作JDBC和ODBC驅動程序,顯然在某些情況下ElasticSearch可以用作關系數據庫。
elasticsearch是Apache Lucene的HTTP包裝器。 Apache Lucene以列式方式存儲對象以加速搜索(Lucene段)。
我正在完成非常好的尼古拉答案:
好處:
壞事:
我的觀點是使用elasticsearch作為數據庫的一種視圖,具有只讀訪問權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.