天天看點

ElasticSearch學習筆記(1)· ES基本概念一、什麼是全文檢索二、什麼是ElasticcSearch三、ES的應用場景JSON格式資料四、ES的安裝五、ES中基本概念

目錄

  • 一、什麼是全文檢索
  • 二、什麼是ElasticcSearch
  • 三、ES的應用場景JSON格式資料
  • 四、ES的安裝
  • 五、ES中基本概念
    • 1、接近實時(Near Real Time簡稱NRT)
    • 2、索引(index)
    • 3、類型(Type)
    • 4、映射(Mapping)
    • 5、文檔(document)

一、什麼是全文檢索

​ 全文檢索是計算機程式通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現的次數和位置,當使用者查詢時根據建立的索引查找,類似于通過字典的檢索字表查字的過程。

​ 全文檢索(Full-Text Retrieval(檢索)以文本作為檢索對象,找出含有指定詞彙的文本。全面,準确和快速時衡量全文檢索系統的關鍵名額。

關于全文檢索,我們要知道

​ 1、隻處理文本。

​ 2、不處理語意。

​ 3、搜尋時英文不區分大小寫。

​ 4、結果清單由相關度排序。

二、什麼是ElasticcSearch

​ ElasticSearch簡稱ES,是基于Apache Lucene建構的開源搜尋引擎,是當時流行的企業級搜尋引擎。Lucene本身就可以被認為迄今為止性能最好的一款開源搜尋引擎工具包,但是Lucene的API相對複雜,需要身後的搜尋理論,很難內建到實際的應用中去,同時ES是采用java語言編寫,提供了簡單易用的RestFul API,開發者可以使用其簡單的RestFul API,開發相關的搜尋功能,進而避免Lucene的複雜性。

三、ES的應用場景JSON格式資料

​ ES主要以輕量級JSON作為資料存儲格式,這點與MongoDB有點類似,但它在讀寫性能上優于MongoDB,同時也支援地理位置查詢,還友善地理位置和文本混合查詢,以及在統計、日志類資料存儲和分析、可視化這方面是引領者。

國外:

​ Wikipedia(維基百科)使用ES提供全文搜尋并高亮關鍵字,StackOverFlow結合全文搜尋與地理位置查詢,Github使用ES檢索1300億行的代碼。

國内:

​ 百度(在雲分析、網盟、預測、文案、錢包、風控等業務上都應用了ES,單叢集每天導入30TB+資料,總共每天60TB+)、新浪、阿裡巴巴、騰訊等公司均有對ES的使用。

使用比較廣泛的平台ELS(ElasticSearch、LogStash、Kibana)

四、ES的安裝

# 1、安裝前準備
	centos7 
	java8
	elasticsearch6.2.4
	
# 2、在官方網站下載下傳ES
	wget https://artifacts.elastic.io/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
	
# 3、配置環境變量
	vim /etc/profile
		#在檔案末尾加入
		export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
		export PATH=$PATH:$JAVA_HOME/bin
		
# 4、重載系統配置
	source /etc/profile
	
# 5、建立普通使用者(es不能作為root使用者啟動)
	# a、在linux系統中建立新的組
		groupadd es
	# b、建立新的使用者es并将es使用者方入es組中
		useradd es -g es

# 6、上傳es到普通使用者的家目錄,并安裝elasticsearch
	tar -zxvf elasticsearch-6.4.1.tar.gz
	
# 7、elasticsearch的目錄結構
	# bin			可執行的二進制檔案的目錄
	# config		配置檔案的目錄
	# lib			運作檔案的目錄
	# logs modules	運作時日志檔案
    # plugins		es中提供的插件
    
# 8、運作es服務
	#在bin目錄中執行
	./elasticsearch
	
# 9、測試ES是否啟動成功
	#在指令中斷中執行,
	curl http://localhost:9200
	
# 10、開啟ES遠端通路
	vim elasticsearch.yml	#将原來network修改為以下配置:
	network.host: 0.0.0.0
	
# 11、啟動時錯誤解決方案
	### a、重新啟動es出現如下錯誤
	 **ERROR:bootstrap checks failed[1]: max file descriptors [4096] for elasticsearch process is too low.increase to at least [65526]**
	# 解決方案
	# 切換到root使用者修改
	vim /etc/security/limits.conf
	# 在最後面追加如下内容
	*	soft	nofile	65536
	*	hard	nofile	65536
	*	soft	nproc	4096
	*	hard	nproc	4096
	#退出重新登入檢測配置是否生效
	ulimit -Hn
	ulimit -Sn
	ulimit -Hu
	ulimit -Su
	
	###b、重新啟動出現如下錯誤
	**ERROR:max number of threads [3802] for user [admin] is too low,increase to at least [4096]**
	#解決方案:
	#進入limits.d目錄下修改配置檔案
	vim /etc/security/limits.d/20-nproc.conf
	#修改為啟動ES使用者名soft nproc 4096
	
	###c、重新啟動出現如下錯誤
	**ERROR:max virtual memory areas vm.max_map_count [65530] is woo low,increase to at least [262144]**
	#解決方案:
	vim /etc/sysctl.conf
	vm.max_map_count=655360
	#執行以下指令生效:
	sysctl -p
           

五、ES中基本概念

1、接近實時(Near Real Time簡稱NRT)

Elasticsearch時一個接近實時的搜尋平台,這意味着,從索引一個文檔直到這個文檔能夠被搜尋到有一個請問的延遲(通常時1秒内)

2、索引(index)

一個索引就是一個擁有幾分相似特征的文檔的集合,比如說,你可以有一個客戶資料的索引,另外一個産品目錄的索引,還有一個訂單數量的索引,一個索引由一個名字來辨別(必須全部是小寫字母的),并且當我們要對這個索引中的文檔進行索引、搜尋、更新和删除的時候,都要使用到這個名字。索引類似于關系型資料庫中Database的概念,在一個叢集中,如果你想,可以定義任意多的索引。

3、類型(Type)

一個類型是你的索引的一個邏輯上的分類/分區,其語意完全由你來定。在一個索引中,你可以定義一種或多種類型,通常,會為具有一組共同字段的文檔定義一個類型。比如說,我們假設你營運一個部落格平台并且将你所有的資料存儲到一個索引中。在這個索引中,你可以為使用者資料定義一個類型,為boke資料定義另一個類型,當然,也可以為評論資料定義另一個類型。類型類似于關系型資料庫中Table的概念。

NOTE:在5.x版本以前可以在一個索引中定義多個類型,6.x之後版本也可以使用,但是不推薦,在8.x版本中徹底移除一個索引中建立多個類型

4、映射(Mapping)

Mapping是ES中的一個很重要的内容,**它類似于傳統關系型資料庫中table的schema,用于定義一個索引(index)中的類型(type)的資料的結構,**在ES中,我們可以手動建立type(相當于table)和mapping(相當于schema),也可以采用預設建立模式,在預設配置下,ES可以根據插入的資料自動建立type及其mapping。mapping中主要包括字段名,字段資料類型和字段索引類型

5、文檔(document)

一個文檔是一個可被索引的基礎資訊單元,類似于表中的一條記錄。比如,你可以擁有某一個員工的文檔,也可以擁有某個商品的一個文檔。文檔以采用了輕量級的資料交換格式JSON來表示

ElasticSearch學習筆記(1)· ES基本概念

ElasticSearch學習筆記(2)· 基于Kibana的基本CRUD

ElasticSearch學習筆記(3)· ES進階檢索(query)

ElasticSearch學習筆記(4)· ES IK分詞器

ElasticSearch學習筆記(5)· Java操作Elasticsearch6.2.4

ElasticSearch學習筆記(6)· Java操作Elasticsearch7.6.1

ElasticSearch學習筆記(7)· Springboot+SpringData操作ES

ElasticSearch學習筆記(8)· ES叢集的搭建

繼續閱讀