有哪些大廠商在使用elasticsearch昼扛?
1.?維基百科使用Elasticsearch提供全文搜索并高亮關鍵字涯肩,以及輸入實時搜索(search-as-you-type)和搜索糾錯(did-youmean)
等搜索建議功能。
2.?英國衛(wèi)報使用Elasticsearch結合用戶日志和社交網(wǎng)絡數(shù)據(jù)提供給他們的編輯以實時的反饋,以便及時了解公眾對新發(fā)表
的文章的回應
3.?StackOverflow結合全文搜索與地理位置查詢,以及more-like-this功能來找到相關的問題和答案翎碑。
4.?Github使用Elasticsearch檢索1300億行的代碼。
為了搜索
Elasticsearch是一個基于Apache Lucene(TM)的開源搜索引擎之斯。無論在開源還是專有領域日杈,Lucene可以被認為是迄今為止最
先進、性能最好的佑刷、功能最全的搜索引擎庫莉擒。
安裝監(jiān)控工具marvel
安裝方法:todo
集群和節(jié)點
節(jié)點(node)是一個運行著的Elasticsearch實例
集群(cluster)是一組具有相同 cluster.name 的節(jié)點集合
和傳統(tǒng)關系型數(shù)據(jù)庫概念對比
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields
查詢操作:
查詢、過濾瘫絮、全文搜索涨冀、短語搜索、高亮麦萤、相關性評分鹿鳖、分析(聚合)
集群健康狀態(tài)
green 所有主要分片和復制分片都可用
yellow 所有主要分片可用扁眯,但不是所有復制分片都可用
red 不是所有的主要分片都可用
分片概念
分片就是一個Lucene實例。節(jié)點栓辜、主分片(一開始就確定)恋拍、復制分片
默認情況下,一個索引被分配5個主分片藕甩、
ES集群命令
查看集群狀態(tài):curl 'http://127.0.0.1:9200/_cluster/health?pretty'
更多命令:todo
版本控制
外部版本號與之前說的內(nèi)部版本號在處理的時候有些不同施敢。它不再檢查當前最新的 _version 是否與請求中指定的一致,而是檢查是否小
于指定的版本狭莱。如果請求成功僵娃,外部版本號就會被存儲到 _version 中。
ES腳本
Groovy
檢索多個文檔
mget
批量操作
mget 允許我們一次性檢索多個文檔一樣腋妙, bulk API允許我們使用單一請求來實現(xiàn)多個文檔
POST /_bulk
{ "delete": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "create": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "title": "My first blog post" }
{ "index": { "_index": "website", "_type": "blog" }}
{ "title": "My second blog post" }
{ "update": { "_index": "website", "_type": "blog", "_id": "123", "_retry_on_conflict" : 3} }
{ "doc" : {"title" : "My updated blog post"} }
整個批量請求需要被加載到接受我們請求節(jié)點的內(nèi)存里默怨,所以請求越大,給其它請求可用的內(nèi)存就越小骤素。有一個最佳
的 bulk 請求大小匙睹。超過這個大小,性能不再提升而且可能降低济竹。
最佳大小痕檬,當然并不是一個固定的數(shù)字。它完全取決于你的硬件送浊、你文檔的大小和復雜度以及索引和搜索的負載梦谜。幸運的
是,這個最佳點(sweetspot)還是容易找到的:
試著批量索引標準的文檔袭景,隨著大小的增長唁桩,當性能開始降低,說明你每個批次的大小太大了耸棒。開始的數(shù)量可以在
1000~5000個文檔之間荒澡,如果你的文檔非常大,可以使用較小的批次与殃。
通常著眼于你請求批次的物理大小是非常有用的仰猖。一千個1kB的文檔和一千個1MB的文檔大不相同。一個好的批次最好保持
在5-15MB大小間奈籽。