ES介紹 維基百科使用Elasticsearch來進行全文搜做並高亮顯示關鍵詞,以及提供search-as-you-type、did-you-mean等搜索建議功能。 英國衛報使用Elasticsearch來處理訪客日誌,以便能將公眾對不同文章的反應實時地反饋給各位編輯。 StackOverflow
ES介紹
維基百科使用Elasticsearch來進行全文搜做並高亮顯示關鍵詞,以及提供search-as-you-type、did-you-mean等搜索建議功能。
英國衛報使用Elasticsearch來處理訪客日誌,以便能將公眾對不同文章的反應實時地反饋給各位編輯。
StackOverflow將全文搜索與地理位置和相關信息進行結合,以提供more-like-this相關問題的展現。
GitHub使用Elasticsearch來檢索超過1300億行代碼。
每天,Goldman Sachs使用它來處理5TB數據的索引,還有很多投行使用它來分析股票市場的變動。
ElasticSearch是一個基於Lucene的搜索伺服器。它提供了一個分散式多用戶能力的全文搜索引擎,基於RESTful web介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放源碼發佈。能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。
Real-Time Data實時數據
Real-Time Advanced Analytics實時高級分析
Massively Distributed 大規模分散式
High Availability 高可用性
Multitenancy 多索引
Full-Text Search 全文搜索
Document-Oriented 面向文檔
Schema-Free 數據結構可自定
Developer-Friendly, RESTful API 開發友好
Per-Operation Persistence 每一個操作持久化
Apache 2 Open Source License 許可條款
Build on top of Apache Lucene™ 基於Lucene
Elasticsearch VS Solr
http://solr-vs-elasticsearch.com/
ES資源
官網:
https://www.elastic.co/downloads/elasticsearch
文檔:
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
權威指南:
https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html
權威指南(翻譯):
http://es.xiaoleilu.com/
客戶端:
https://www.elastic.co/guide/en/elasticsearch/client/index.html
C#:http://nest.azurewebsites.net/
Chrome插件Sense
Kibana
安裝sense:./bin/kibana plugin --install elastic/sense
訪問:http://192.168.0.170:5601/app/sense
ES概念
集群&節點(Cluster&Node)
分片&副本(Shard&Replication)
索引(Index)
類型(Document Type)
文檔(Document)
集群>節點>索引(分片|副本)>類型>文檔
ES配置&基本使用
cluster.name: elasticsearch 集群名稱 預設elasticsearch
node.name: “node1“ 節點名稱 預設會生成
node.master: true 是否有權選舉為master 預設true
node.data: true 是否存儲數據 預設true
index.number_of_shards: 5 預設索引主分片數量 預設5
index.number_of_replicas: 1 預設索引備份數 預設1
path.conf: /path/to/conf 配置文件路徑 預設es安裝目錄下conf
path.data: /path/to/data 索引數據存放路徑 預設安裝目錄下data
path.work: /path/to/work臨時文件的存儲路徑 預設安裝目錄下work
path.logs: /path/to/logs 日誌路徑 預設安裝目錄下logs
path.plugins: /path/to/plugins 插件路徑 預設安裝目錄下plugins
network.host: 192.168.0.1 綁定的ip 預設127.0.0.1
transport.tcp.port: 9300 傳輸埠 預設9300
transport.tcp.compress: true 傳輸是否壓縮 預設false
http.port: 9200 提供http埠 預設9200
discovery.zen.ping.multicast.enabled: false 是否自動發現節點 預設true
discovery.zen.ping.unicast.hosts: [“host1”, “host2:port”, “host3[portX-portY]”]
script.inline: on
script.indexed: on
ES分散式集群
node.master: false node.data: true
該node伺服器只作為一個數據節點,只用於存儲索引數據。使該node伺服器功能 單一,只用於數據存儲和數據查詢,降低其資源消耗率。
node.master: true node.data: false
該node伺服器只作為一個主節點,但不存儲任何索引數據。該node伺服器將使用 自身空閑的資源,來協調各種創建索引請求或者查詢請求,將這些請求合理分發到相關 的node伺服器上。
node.master: false node.data: false
該node伺服器即不會被選作主節點,也不會存儲任何索引數據。該伺服器主要用 於查詢負載均衡。在查詢的時候,通常會涉及到從多個node伺服器上查詢數據,並請 求分發到多個指定的node伺服器,並對各個node伺服器返回的結果進行一個彙總處理, 最終返回給客戶端。
ES插件
Elasticsearch-head 管理ES
Elasticsearch-kopf 管理ES
Elasticsearch-knapsack 數據導入導出
Elasticsearch-SQL 用SQL查詢數據
Elasticsearch-analysis-ik IK分詞