什么是es
es 全稱elasticsearch
es : 做全文檢索的 ,底層基于lucene的開發(fā)
lucene 相等于jdbc
es 相當于 mybatis/jpa
es和lucene的比較
為什么需要使用es.為什么不用lucene?
(1)api操作很麻煩 不方便
? 搜索 : 創(chuàng)建索引 搜索索引 一堆api
? es: get /product/1 -- {}
(2)lucene不支持集群
? es集群 處理很大的數(shù)據量
? KB -- > MB -->GB -- >TB -- >PB
? 1024KB -- 1MB
? 1024MB -- 1GB
? 1024GB -- 1TB
? 1024TB -- 1PB
Es和solr的區(qū)別
es 和 solr 都可以做全文檢索,solr的重量級的框架,它除了全文檢索以外,還可以做其他的事情(比如
命中標示、分面搜索、動態(tài)聚類、數(shù)據庫集成,以及富文本(如Word、PDF)),solr可以nosql結合起來使用
solr 在傳統(tǒng)的搜索效率要比es好,但是實時搜索領域比es低
使用es
- 安裝es服務端
解壓-->bin/elasticsearch.bat-->瀏覽器訪問 http://localhost:9200/
9200web里面展示的效果 9300java程序可以訪問的端口
(2)es的客戶端的交互方式
a) 基于restful風格API的去操作
get post put delete patch
(1)curl的命令方式 --不用
(2)kibana也可以操作
(3)head工具
(4)postman(測試后臺的java代碼)
b) 通過java代碼去操作
? java通過9300操作es服務器
(3)restful風格 +JSON方式 操作數(shù)據
? http特點 就是無狀態(tài)的
? get /shopping/1
? put /shopping/2 {"name":"xx產品"}
? post /shopping/2 {"name":"xx產品"}
? delete /shopping/1
使用客戶端
kibanna客戶端
index:索引庫
type:相當于mysql的表
json:一行數(shù)據

文檔的CRUD
基本crud
# 完成crud
# 新增
PUT crm/employee/1
{
"name":"xiaorong",
"age":18
}
# 修改 --整個文檔
POST crm/employee/1
{
"name":"xiaohuahua"
}
# 修改局部文檔
POST crm/employee/1/_update
{
"doc":{"name":"xiaohuahua"}
}
# 查詢
GET crm/employee/1
# 刪除
DELETE crm/employee/1
特殊用法
# 展示沒有什么效果(了解)
GET crm/employee/AW-tOSHILqo6XVH8f6cg?pretty
# 展示部分的字段
GET crm/employee/AW-tOSHILqo6XVH8f6cg?_source=age,name
# 返回元數(shù)據
GET crm/employee/AW-tOSHILqo6XVH8f6cg/_source
# 修改數(shù)據 (腳本修改 --了解)
POST crm/employee/AW-tOSHILqo6XVH8f6cg/_update
{
"script" : "ctx._source.age += 5"
}
# 批量新增 --了解
POST _bulk
{ "delete": { "_index": "itsource", "_type": "employee", "_id": "123" }}
{ "create": { "_index": "itsource", "_type": "blog", "_id": "123" }}
{ "title": "我發(fā)布的博客111" }
{ "index": { "_index": "itsource", "_type": "blog" }}
{ "title": "我的第二博客2222" }
GET itsource/blog/_search
文檔的查詢
- 通過id查詢
GET crm/employee/AW-tOSHILqo6XVH8f6cg/_source
- 批量查詢
# 不同庫 不同表數(shù)據 (了解)
GET _mget
{
"docs" : [
{
"_index" : "itsource",
"_type" : "blog",
"_id" : "123"
},
{
"_index" : "crm",
"_type" : "employee",
"_id" : "AW-tOSHILqo6XVH8f6cg",
"_source": ["name","age"]
}
]
}
# 同一個庫 同一個表數(shù)據
GET itsource/blog/_mget
{
"ids":["123","AW-tQP_4Lqo6XVH8f6ci"]
}
- 其他的查詢
# 分頁查詢
GET crm/employee/_search?size=3&from=6
# 帶條件查詢
GET crm/employee/_search?q=age:38
GET crm/employee/_search?q=age[18 TO 48]