ElasticSearch從入門到使用
阿新 • • 發佈:2019-01-11
概述
本篇內容定位ElasticSearch入門介紹,其中包括ElasticSearch產生背景,特點,應用場景,安裝,使用(命令列,Java中引入),底層原理,等。
產生的背景
大資料時代,大量的資料只是被儲存,不能做實時決策分析,這時候需要一個全文搜尋,或者結構化資料的實時統計工具。
Elasticsearch 是一個分散式、可擴充套件、近實時的搜尋與資料分析引擎。 它能從專案一開始就賦予你的資料以搜尋、分析和探索的能力。
特點
分散式、可擴充套件、實時、處理PB級別的資料
應用場景
統計、搜尋
安裝方法
使用
基本使用
類似於MySQL,在某一類資料存入MySQL時,需要在MySQL中先建立庫(database),再建立表(table),然後把資料存入insert
select
,需要刪除就delete
,需要更新就update
。 那麼ES作為一個搜尋引擎,是如何儲存資料的,又是如何查詢的,不需要了,又該怎麼刪除呢,並且當資料有誤時,能修改嗎?
1 . 再回答上面幾個問題之前需要先引入幾個概念:
- 索引
索引是一類文件的集合,所有的操作比如索引(索引資料)、搜尋、分析都是基於索引完成的。
在一個叢集中,可以定義任意數量的索引。 - 型別
型別可以理解成一個索引的邏輯分割槽,用於標識不同的文件欄位資訊的集合。 - 文件
文件是儲存資料資訊的基本單元,使用json來表示。 - 節點
一個ES伺服器就成為一個節點,多個ES伺服器就組成了叢集。 - 分片與備份
在ES中,索引會備份成分片,每個分片是獨立的lucene索引,可以完成搜尋分析儲存等工作。
2 . 舉例子
看了上面的定義描述,再通過例子來了解下。
現在有個People物件,需要儲存在ES中,People的定義如下:
public class People {
private Long id;
private String name;
private String sex;
private Float height;
private Float weight;
/**
* 興趣愛好
*/
private String interests;
}
可以建立一個索引名稱為people_index
的索引,型別為people_type
,型別是文件欄位資訊的集合,所以型別的json為
"properties": {
"id": {
"type": "long",
"index": "not_analyzed"
},
"name": {
"type": "string"
},
"sex": {
"type": "string"
},
"height": {
"type": "float",
"index": "not_analyzed"
},
"weight":{
"type": "float",
"index": "not_analyzed"
},
"interests": {
"type": "string",
"analyzer": "ik"
}
}
Java中引入
Web-Demo專案