此系列博客分為上中下3篇:上篇是關于es的概念和對數據的增刪改操作,中篇是對數據的查詢、對搜索結果進行處理操作,下篇是介紹怎么在Java代碼中調用和操作es。
基本概念 |
1、es是什么?有什么作用?
es全名是elasticsearch,是一個搜索引擎,可以幫助我們從海量數據中找到想要的內容。比如:
(1)先將商品信息存到es里,然后當搜索名稱帶有“蘋果”的商品時,es就能將“紅富士蘋果”、“煙臺蘋果”等符合條件的商品篩選出來了。當然,mysql中使用like語句也能篩選出來,只是性能低。
(2)還可以用于搜集日志

es的官方文檔:
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-all-query.html
2、es能干點啥?
1、關鍵字的搜索和分頁
2、添加過濾條件:品牌、城市、星級、價格等。
- city(城市)、brand(品牌)、starName(星級)的精確匹配
- price(價格)的范圍過濾
3、按距離排序
顯示具體的距離值
4、讓指定的酒店在搜索結果中排名置頂
我們給需要置頂的酒店文檔添加一個標記。然后利用function score給帶有標記的文檔增加權重。
5、關鍵詞高亮
3、es的原理?
倒排索引。對文檔內容分詞,對詞條創建索引,并記錄詞條所在文檔的信息。查詢時先根據詞條查詢到文檔id,而后獲取文檔。
4、es中的一些概念
文檔:一條條的JSON數據,對應數據庫中的行
字段:JSON數據中的字段,對應數據庫中的列
索引:相同類型的文檔的集合,對應數據庫中的表
映射:數據字段類型的約束等,對應數據庫的表結構
索引庫操作 |
1、type常見的有哪些?
字符串:text、keyword
數字:long、integer、short、byte、double、float
布爾:boolean
日期:date
對象:object
2、創建索引庫和mapping
3、查看、刪除索引庫
get /student
//查看索引庫
get /student//刪除索引庫
delete /student
4、索引庫和mapping一旦創建無法修改,但是可以添加新的字段
//添加成績字段
put /student/_mapping
{"properties": {"score": {"type": "integer"}}
}
操作文檔 |
1、新增數據
2、刪除數據
DELETE /索引庫名/_doc/文檔id
3、修改數據
4、查詢數據
此部分在中篇
結尾:值得一提的是,用Java代碼也可以來操作es,但如果僅是對索引和文檔的修改,直接使用elk即可,方便快捷