2020-01-16 elasticsearch

什么是es

es 全称elasticsearch
es : 做全文检索的 ,底层基于lucene的开发
lucene 相等于jdbc
es 相当于 mybatis/jpa

es和lucene的比较

为什么需要使用es.为什么不用lucene?

(1)api操作很麻烦 不方便

​ 搜索 : 创建索引 搜索索引 一堆api

​ es: get /product/1 -- {}

(2)lucene不支持集群

​ es集群 处理很大的数据量

​ KB -- > MB -->GB -- >TB -- >PB

​ 1024KB -- 1MB

​ 1024MB -- 1GB

​ 1024GB -- 1TB

​ 1024TB -- 1PB

Es和solr的区别

es 和 solr 都可以做全文检索,solr的重量级的框架,它除了全文检索以外,还可以做其他的事情(比如

命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)),solr可以nosql结合起来使用

solr 在传统的搜索效率要比es好,但是实时搜索领域比es低

使用es

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方式 操作数据

​ http特点 就是无状态的

​ get /shopping/1

​ put /shopping/2 {"name":"xx产品"}

​ post /shopping/2 {"name":"xx产品"}

​ delete /shopping/1

使用客户端

kibanna客户端
index:索引库
type:相当于mysql的表
json:一行数据


image.png

文档的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

# 返回元数据
GET crm/employee/AW-tOSHILqo6XVH8f6cg/_source

# 修改数据 (脚本修改 --了解)
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": "我发布的博客111" }
{ "index": { "_index": "itsource", "_type": "blog" }}
{ "title": "我的第二博客2222" }


GET itsource/blog/_search

文档的查询

  • 通过id查询
GET crm/employee/AW-tOSHILqo6XVH8f6cg/_source
  • 批量查询
#  不同库 不同表数据 (了解)
GET _mget
{
"docs" : [
{
"_index" : "itsource",
"_type" : "blog",
"_id" : "123"
},
{
"_index" : "crm",
"_type" : "employee",
"_id" : "AW-tOSHILqo6XVH8f6cg",
"_source": ["name","age"]
}
]
}

#  同一个库 同一个表数据
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]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容