二 elasticsearch入門(資料)

2021-08-14 12:13:23 字數 3056 閱讀 7534

程式中大多的實體或物件能夠被序列化為包含鍵值對的json物件, 鍵(key)是字段(field)或屬性(property)的名字, 值(value)可以是字串、 數字、 波爾型別、 另乙個物件、 值陣列或者其他特殊型別, 比如表示日期的字串或者表示地理位置的物件。

,

"accounts": [,]

}

文件元資料

乙個文件不只有資料。 它還包含了元資料(metadata)——關於文件的資訊。 三個必須的元資料節點是:

節點說明

_index

文件儲存的地方

_type

文件代表的物件的類

_id文件的唯一標識

使用自己的id

put /website/blog/123

自增id

post /website/blog/

想要從elasticsearch中獲取文件, 我們使用同樣的 _index 、 _type 、 _id , 但是http方法改為 get :

get /website/blog/123?pretty
檢索文件的一部分

get /website/blog/123?_source=title,text

get /website/blog/123/_source

put /website/blog/123

在響應中, 我們可以看到elasticsearch把 _version 增加了

請記住 _index 、 _type 、 _id 三者唯一確定乙個文件。 所以要想保證文件是新加入的, 最簡單的方式是使用 post 方法讓elasticsearch自動生成唯一 _id :

post /website/blog/

第一種方法使用 op_type 查詢引數:

put /website/blog/123?op_type=create

或者第二種方法是在url後加 /_create 做為端點:

put /website/blog/123/_create

如果請求成功的建立了乙個新文件, elasticsearch將返回正常的元資料且響應狀態碼是 201 created 。

另一方面, 如果包含相同的 _index 、 _type 和 _id 的文件已經存在, elasticsearch將返回 409 conflict 響應狀態碼

delete /website/blog/123
put /website/blog/1?version=1

<1>

我們只希望文件的 _version 是 1 時更新才生效。

然而, 如果我們重新執行相同的索引請求, 依舊指定 version=1 , elasticsearch將返回 409 conflict 狀態的http響應。 響應體類似這樣:

post /website/blog/1/_update

}

像elasticsearch一樣, 檢索多個文件依舊非常快。 合併多個請求可以避免每個請求單獨的網路開銷。 如果你需要從

elasticsearch中檢索多個文件, 相對於乙個乙個的檢索, 更快的方式是在乙個請求中使用multi-get或者 mget api。

mget api引數是乙個 docs 陣列, 陣列的每個節點定義乙個文件的 _index 、 _type 、 _id 元資料。 如果你只想檢索乙個或幾個確定的字段, 也可以定義乙個 _source 引數:

get /_mget

,

]}

如果你想檢索的文件在同乙個 _index 中(甚至在同乙個 _type 中) , 你就可以在url中定義乙個預設的 /_index 或

者 /_index/_type 。

你依舊可以在單獨的請求中使用這些值:

get /website/blog/_mget

,

]}

事實上, 如果所有文件具有相同 _index 和 _type , 你可以通過簡單的 ids 陣列來代替完整的 docs 陣列:

get /website/blog/_mget

mget 允許我們一次性檢索多個文件一樣, bulk api允許我們使用單一請求來實現多個文件的 create 、 index 、 update 或 delete 。 這對索引類似於日誌活動這樣的資料流非常有用, 它們可以以成百上千的資料為乙個批次按序進行索引。

post /_bulk} }

} }}

多大才算太大?

試著批量索引標準的文件, 隨著大小的增長, 當效能開始降低, 說明你每個批次的大小太大了。 開始的數量可以在

1000~5000個文件之間, 如果你的文件非常大, 可以使用較小的批次。

通常著眼於你請求批次的物理大小是非常有用的。 一千個1kb的文件和一千個1mb的文件大不相同。 乙個好的批次最好保持

在5-15mb大小間。

ElasticSearch入坑指南之概述及安裝

恢復內容開始 elasticsearch入坑指南之概述及安裝 elasticsearch 簡稱es 基於lucene的分布式全文檢索引擎。使用es可以實現近實時的儲存 檢索及海量資料的分析。es可以應用於以下場景 es核心概念 水平拆分 拓展 通過分布式和跨shared操作提公升效能及吞吐 在 sh...

ElasticSearch中文分詞(二)

1 中文分詞 中文分詞的難點在於,在漢語中沒有明顯的詞彙分界點,如在英語中,空格可以作為分隔符,如果分隔不正確就會造成歧義。常用中文分詞器,ik jieba thulac等,推薦使用ik分詞器。目錄下即可。如果使用docker執行 docker cp elasticsearch analysis i...

ElasticSearch(二)核心概念

1 near realtime nrt 近實時,兩個意思,從寫入資料到資料可以被搜尋到有乙個小延遲 大概1秒 基於es執行搜尋和分析可以達到秒級 2 cluster 集群,包含多個節點,每個節點屬於哪個集群是通過乙個配置 集群名稱,預設是elasticsearch 來決定的,對於中小型應用來說,剛開...