Elasticsearch学习之路(一)
一.前序
1.1正向索引和倒排索引
** 正向索引通常用于數據庫中,在搜索引擎領域使用的最多的就是倒排索引 **
通過例子表示:
我愛編程,
我愛編程,我是小碼農
1.1.1 正向索引
假設我們使用mysql的全文檢索,會對上面兩句話進行分詞處理,得到的結果如下:
我 愛 編程 愛編程 我愛編程 愛編
我 愛 編程 愛編程 我愛編程 愛編 小碼農
我們通過正向索引搜索編程這兩個字,效率非常低下
1.1.2 倒排索引
倒排索引是按照分詞與文檔進行映射,效果如下:
| 關鍵字 | 文檔名 |
|---|---|
| 我 | html1,html2 |
| 小碼農 | html2 |
| 編程 | html1,html2 |
如果采用倒排索引的方式搜索編程這個詞,那么會直接找到關鍵字中查找到編程,然后查找到對應的文檔,這就是所謂的倒排索引
- 相關軟件
- 后續用
Kibana可視化界面工具 - 某些東西需要篩選,比如一些敏感信息之類的,用
Logstash,再到es里面
- 后續用
| 軟件名 | 下載地址 |
|---|---|
| Elasticsearch | https://www.elastic.co/cn/start |
| Kibana | https://www.elastic.co/cn/start |
| Logstash | https://www.elastic.co/cn/downloads/logstash |
二.ES的下載和啟動
1.下載ES
我這里下載的是7.15.0windows版本64位的
找到bin目錄下的elasticsearch.bat點擊啟動
通過瀏覽器地址欄輸入:http://localhost:9200/打開
2.下載Kibana
我這里下載的是7.15.0windows版本64位的
這個是之前啟動是一樣的也是bin/kibana.bat啟動
打開http://localhost:5601/
之后操作ES都用Kibana管理工具
進入到 Dev Tools里面操作
輸入GET _cat/indices查看所有索引試一下
3.下載Logstash
我這里下載的是7.15.0windows版本64位的
從http://files.grouplens.org/datasets/movielens/下載ml-latest.zip
找到movies.csv移動到和bin目錄同級
然后再手寫一個conf配置文件logstash.conf
input{file{//這里路徑修改一下path => "E:/logstash-7.15.0-windows-x86_64/logstash- 7.15.0/movies.csv"start_position => "beginning"sincedb_path =>"E:/logstash-7.15.0-windows-x86_64/logstash- 7.15.0/db_path.log"}
}
filter{csv{separator => ","columns =>["id","content","genre"]}mutate{split => { "genre" => "|"}remove_field => ["path","host","@timestamp","message"]}mutate{split => ["content","("]add_field =>{"title" => "{[content][0]}"}add_field =>{"year" => "%{[content][1]}"}}mutate{convert =>{"year" => "integer"}strip =>["title"]remove_field =>["path","host","@timestamp","message","content"]}
}
output{elasticsearch{//ES地址hosts => "http://localhost:9200"//指定索引名字index => "movies"document_id => "%{id}"}stdout{}
}
使用命令logstash -f ../logstash.conf即可運行
GET _cat/indices再查看一下就有movies這個東西了
三.ES的基本概念
3.1 索引
es中的索引有多層的意思:
a.某一類文檔的集合就構成了一個索引,類比到數據庫就是一個數據庫(或者數據庫表)
b.它描述一個動作就是將某個文檔保存到es的過程也叫索引
c.倒排索引
3.2 文檔
具體的一條數據,類比到數據庫就是一條記錄
3.3ES文件目錄結構
{"_index":"movies",//索引名"_type":"_doc",//類型"_id":"1000",//ID"_source":{//存放具體的數據......}
}
3.4 mapping
mapping是ES每一個文檔的約束信息,例如屬性的類型,是否能被索引
3.5 DSL
DSL是ES的查詢語言
3.6類比
通過DBMS與ES的基本概念進行類比
| DBMS | Elasticsearch |
|---|---|
| database | Index |
| table | type(在7.0之后type為固定值_doc) |
| Row | Document |
| Column | Field |
| Schema | Mapping |
| SQL | DSL(Descriptor Structure Language) |
注:在7.0之前,一加粗樣式個Index可以創建多個類型,從7.0開始,一個索引只能創建一個類型,也就是_doc
四.ES的基本使用
4.1 基本CRUD
GET _cat/indices 查看所有索引
GET movies/_search #查詢movies的數據
GET movies/_count #查詢movies的總數
GET _cat/indices #查看所有的索引
GET movies/_doc/24 查詢id位24的數據
POST users/_doc/1 #填加id為1的文檔,如果沒有指定id,ES會自動生成
{“firstname”:“will”,“lastname”:“smith”}
POST users/_create/2 #創建id為2的文檔,如果索引中已存在相同id,會報錯:
{“firstname”:“will”,“lastname”:“smith”}
總結
以上是生活随笔為你收集整理的Elasticsearch学习之路(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实现二叉树的重建1 之由前序
- 下一篇: python实现二叉树的重建2 之由中序