ElasticSearch簡介和linux下安裝配置環境+對數據增刪改查

一:ElasticSearch簡介

ElasticSearch:(solr與Lucene與其類似)

  • 是一個基於Lucene的搜索服務器(ES)—數據庫
  • 專門爲分佈式環境設計
  • 封裝了luence的檢索細節,只是走restfulapi。
  • 近乎實時的存儲、檢索數據;本身擴展性很好
  • 通過簡單的RESTful API來隱藏Lucene的複雜性
  • 文件內容搜索的數據庫----反向檢索

二:ElasticSearch優缺點:

優點:

數據量較大的時候可以進行快速搜索,並且本身還帶有分詞器,可以對elasticSearch內的數據進行分詞搜索。有利於數據管理

缺點:

1.在需要添加新數據與新字段的時候,如果elasticSearch進行搜索是可能需要重新修改格式。之前的數據需要重新同步,對數據的管理有很多困難。
2.許多mysql可以搜索到的東西,在elasticSearch裏就不能搜或很難搜

三:ElasticSearch用法

分片:索引指向一個或多個分片得邏輯命名空間,即一篇文章拆成多份

主分片:默認分5片,索引首先被存儲在主分片中,並複製相應得副本分片

副本分片:一旦主分片失效,副分片晉升爲主分片

主節點:負責創建索引,刪除,分配分片數,追蹤節點狀態

節點:一個集羣由多個節點組成,一個節點是es實例,默認每個節點都爲候選主節點與數據節點

倒排索引:根據關鍵字倒過來找文章

ElasticSearchCRUD:

創建index(庫):

# 通過hash映射來確定副本得存儲位置
# 通過路由計算hash(routing) % number_of_primary_shards(分片)來得到存儲得位置
# 建索引
PUT demo.1234
{
	"settings" :{
		"index" :{
			"number_of_shards" : 2, # 主分片數量 默認爲5
			"number_of_replicas" : 2 # 副本數量,默認爲1爲不設
		}
	}
}

創建Type(表):

postman上輸入對應傳送方式,URL

在body請求的raw處傳送json格式:

在這裏插入圖片描述

在raw中輸入json格式命令:

{
	"settings" : {
		# 加了index索引之後會硬盤
		# "index" : {}一般不加
		"number_of_shards" : 3, 
		"number_of_replicas" : 1
	},
	"mappings" : {
		# 建type 表
		"userinfos" : {
			# 建 document 行
			"properties" : {
				# 建 field 列
				"userid" : { "type" : "integer" },
				"username" : { "type" : "keyword" },
				"birthday" : {
					"type" : "date",
					"format" : "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
				},
				"say" : { "type" : "text" }
			}
		}
	}	
}

Create:插入field信息

postman上輸入對應傳送方式,URL

在body請求的raw處傳送json格式:
在這裏插入圖片描述

在raw中輸入json格式命令:

{
	"settings" : {
		"number_of_shards" : 3, # 主分片爲3
		"number_of_replicas" : 1 # 副本不設
	},
	"mappings" : {
		"userinfos" : {
			"properties" : {
				"userid" : { "type" : "integer" },
				"username" : { "type" : "keyword" },
				"birthday" : {
					"type" : "date",
					"format" : "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
				},
				"say" : { "type" : "text" }
			}
		}
	}	
}

Update:更新field信息

postman上輸入對應傳送方式,URL中輸入修改id和表和update命令
在這裏插入圖片描述

在body請求的raw處傳送json格式:

在這裏插入圖片描述

在raw中輸入json格式命令:

{
	"doc" : {
		"username" : "lisi"
	}
}

Delete:刪除field信息

postman上輸入對應傳送方式,URL中輸入修改id和表
在這裏插入圖片描述

然後直接send即可刪除

將文章關鍵詞分

Read:查找

  • match_phrase:短語查詢不能分割,需要連着查

  • match_all:查所有

  • match_phrase_prefix:短語前綴查詢,前面都和match_phrase一樣,最後一個分詞作爲前綴匹配

  • match: 布爾匹配查詢:只要查到分詞當中其中任意一個,就可以查到

  • multi_match:多字段匹配查詢

{
    "query": {
    	# 查詢兩個字段中是否都有該值的document
        "multi_match": {
          "query": "John like cooking",
          "fields": ["name","interest"]
        }
    }
}

四:linux下的ElasticSearch安裝及環境配置

第一步:首先我們需要安裝3臺虛擬機,以此模擬集羣環境。
第二步:在3臺虛擬機下都配置好jdk環境,jdk的安裝和shell腳本安裝我以前的文章有寫過。
再次提供傳送門—
https://blog.csdn.net/qq_35050438/article/details/106081902
https://blog.csdn.net/qq_35050438/article/details/106199592
第三步:我們下載好ElasticSearch6.2.2tar包後,將其放在/opt下解壓後,將其在放在/soft/elasticsearch622/目錄下

tar -zxvf elasticsearch6.2.2.tar.gz
mv elasticsearch6.2.2 /soft/elasticsearch622

第四步:修改配置文件config下的elasticsearch.yml文件

vi /opt/soft/elasticsearch622/config/elasticsearch.yml
  • 集羣名稱
cluster.name: es-app #集羣名稱,可以自行修改

在這裏插入圖片描述

  • 本機作爲節點的名字
node.name: es-1 #節點名稱,自行修改

在這裏插入圖片描述

  • 主機地址和端口號
network.host: 192.168.235.133 #主機地址,這裏寫本機IP
http.port: 9200 #端口

在這裏插入圖片描述

  1. 跨域訪問設置
http.cors.enabled: true #設置跨域
http.cors.allow-origin: "*" #設置訪問

在這裏插入圖片描述
第五步:添加linux用戶,並設置密碼

useradd nicedays
passwd nicedays
# 然後設置新密碼

第六步:此時就可以去啓動elasticsearch了,但是往往會出錯,第五步總結一下幾處出錯:

1. 系統最大文件數太低

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
  • 解決辦法:修改 vi /etc/security/limits.conf 文件末尾追加
用戶名 soft nofile 65536
用戶名 hard nofile 131072
用戶名 soft nproc 4096
用戶名 hard nproc 4096

在這裏插入圖片描述
2. 虛擬內存太低

[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
  • 解決辦法:修改vi /etc/sysctl.conf文件末尾追加
vm.max_map_count=655360

保存退出後輸入命令更新文件

sysctl -p

3.用戶訪問權限不夠

java.nio.file.AccessDeniedException: …/elasticsearch-6.2.2/config/jvm.options
  • 解決辦法:因爲我們是用普通用戶登的,而elasticsearch是由root解壓移動的,需要root將權限轉給我們普通用戶
chown 用戶名 elasticsearch-6.2.2安裝目錄路徑 -R

第七步:登錄普通用戶並定位到bin目錄,運行elasticsearch

sudo 用戶名
cd /opt/soft/elasticsearch622/bin
./elasticsearch

在這裏插入圖片描述
看到上圖代表登陸成功,成功我們可以去瀏覽器輸入虛擬機的ip:端口號,以此來訪問

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章