全文搜索引擎Elasticsearch之容器部署與使用

具體請參考官方文檔 ->  Elasticsearch Referencehtml

1、什麼是 Elasticsearch

Elasticsearch 是一個基於 Lucene 的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於 RESTful web 接口。Elasticsearch 是用 Java 開發的,並做爲 Apache 許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用於雲計算中,可以達到實時搜索,穩定,可靠,快速,安裝使用方便。node

2、Docker安裝Elasticsearch

一、開發模式git

可使用如下命令快速啓動Elasticsearch以進行開發或測試:github

$ docker run -p 9200:9200 -p 9300:9300 -d --name es -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.5.3
# 集成ik插件
$ docker run -p 9200:9200 -p 9300:9300 -d --name es -e "discovery.type=single-node" bachue/elasticsearch-ik:6.2.4

二、生產模式web

vm.max_map_count內核設置須要至少設置爲2 62144用於生產。根據您的平臺:docker

  • Linux的數據庫

    vm.max_map_count設置應在/etc/sysctl.conf中永久設置:跨域

    $ grep vm.max_map_count /etc/sysctl.conf
    vm.max_map_count=262144

    要在實時系統類型上應用該設置: sysctl -w vm.max_map_count=262144安全

三、安裝成功後便可訪問bash

3、可視化工具示例

一、ElasticHD 是一款 Elasticsearch的可視化應用(無需配置elasticsearch.yml

$ docker run -p 9800:9800 -d --link es --name elastichd containerize/elastichd

二、elasticsearch-head是elasticsearch的一個集羣管理工具(須要配置elasticsearch.yml 該插件能直接對 Elasticsearch 的數據進行增刪改查,所以存在安全性的問題。建議生產環境下不要使用該插件!

for Elasticsearch 5.x: docker run -d --name es-head -p 9100:9100 --link es docker.io/mobz/elasticsearch-head:5
# 安裝es版本5 不然部分操做沒法正常使用(沒法新建索引等)
docker run -p 9200:9200 -p 9300:9300 -d --name es -e "discovery.type=single-node" elasticsearch:5

es默認不支持跨域訪問的,因此須要從新配置:

Ⅰ、進入容器

docker exec -it es bash

Ⅱ、在elasticsearch.yml配置文件中加入一下內容,而後重啓服務。

http.cors.enabled: true
http.cors.allow-origin: "*"

# 沒法使用vi, 重定向方式完成
echo "http.cors.enabled: true" >> elasticsearch.yml
echo "http.cors.allow-origin: \"*\"" >> elasticsearch.yml

4、基本概念

Node與Cluster

單個 es 實例稱爲一個節點(node) ,   一組節點構成一個集羣(cluster)。

Index

含有相同屬性的文檔集合 - > es會索引全部字段,通過處理後寫入一個反向索引(Inverted Index)。查找數據的時候,直接查找該索引(必須小寫)。

shards分片

每一個索引都有多個分片,每一個分片都是 Lucene 索引

replicas副本

拷貝一份分片就完成分片的副本

Type

索引能夠定義一個或多個類型,文檔必須屬於一個類型

Document

Index 裏面單條的記錄稱爲 Document(文檔)。許多條 Document 構成了一個 Index

Document 使用 JSON 格式表示,下面是一個例子。

{
  "user": "張三",
  "title": "工程師",
  "desc": "數據庫管理"
}

同一個 Index 裏面的 Document,不要求有相同的結構(scheme),可是最好保持相同,這樣有利於提升搜索效率。

5、docker-compose 部署 elasticsearch 集羣 

6、使用

Elasticsearch 支持 RESTFUL 風格 API,其 API 基本格式以下:

http://<ip>:<port>/<索引>/<類型>/<文檔id>

5.1 建立索引

爲了方便測試,咱們使用 ARC工具進行接口的請求。

5.1.1 建立一個非結構化的索引,須要使用 PUT 請求。例如建立一個名爲 book 的索引。

5.1.2 建立一個結構化的索引

5.2 刪除索引

5.3 插入數據

5.3.1 指定id

5.3.2 不指定 ID ,須要使用 POST 請求

5.4 修改數據

修改數據,須要使用 POST 請求,且 URL 須要添加 _update

5.5 查找數據

條件查詢,須要使用 POST 請求

相關文章
相關標籤/搜索