ES核心概念
elasticsearch是面向文档,关系型数据库和elasticsearch客观的对比!一切都是json
关系型数据库 | ElasticSearch |
---|---|
数据库(database) | 索引(indices) |
表(tables) | 类型(types)【即将弃用】 |
行(rows) | 文档(documents) |
字段(columns) | 字段(fields) |
命令模式的使用(RESTFUL风格)
method | url地址 | 描述 |
---|---|---|
PUT | localhost:9200/索引名称/类型名称/文档id | 创建文档(指定文档id) |
POST | localhost:9200/索引名称/类型名称 | 创建文档(随机文档id) |
POST | localhost:9200/索引名称/类型名称/文档id/_update | 修改文档 |
DELETE | localhost:9200/索引名称/类型名称/文档id | 删除文档 |
GET | localhost:9200/索引名称/类型名称/文档id | 通过文档id查询文档 |
POST | localhost:9200/索引名称/类型名称/_search | 查询所有的数据 |
数据类型
- 字符串类型:text、keyword
- 数值类型:long、integer、short、byte、double、float、half float、scaled、float
- 日期类型:date
- 布尔值类型:boolean
- 二进制类型:binary
- 等等…
代码示例
# 创建索引(建库)
PUT /test1
# 建库时可以不加类型只定义规则,属性。因为之后版本可能对类型弃用
# mappings就是一个映射规则
{
"mappings" : {
"properties" : {
"name": {
"type":"text"
},
"age" : {
"type" : "long"
},
"birthday" : {
"type" : "date"
}
}
}
}
# 插入/修改文档(数据)
PUT /user/type1/1
{
"name":"MID"
"age":25
}
# 修改文档【推荐】
POST /user/type1/1/_update
{
"doc":{
"age":23
}
}
# 删除
DELETE test1
#获得文档(数据)
GET test1
# 搜索(q代表查询条件query)
GET kuangshen/user/_search?q=name:MID
GET kuangshen/user/_search
{
"query": {
"match":{
# 多条件可以用空格分割
"name":"MID qiancheng"
}
},
# 结果过滤相当于select name
"_source": ["name"],
# 高亮
"hightlight":{
"pre_tags": "<a>",
"post_tags":"</a>",
"fields":{
"name":{}
}
}
}
GET kuangshen/user/_search
{
"query": {
"match":{
"name":"MID"
}
},
# 排序
"sort":[
{"age": {"order":"asc"}}
],
# 分页
"from": 0,
"size": 5
}
GET kuangshen/user/_search
{
"query": {
"bool":{
"should":[
{
"match":{
"name":"MID"
}
},
{
"match":{
"age":23
}
}
],
# 类似between .. and ..
"filter:{
"range":{
"age":{
"gte": 1,
"lte": 20
}
}
}
}
}
}
# 通过命令elasticsearch索引情况!
GET _cat/方法
查找分为term和match两种查找,
前者【term】精确查找
后者【match】会使用分词器解析!(先分析文档,然后在通过分析的文档进行查询!)
SpringBoot
1、创建索引
2、获取索引
3、删除索引
4、添加文档
5、获取文档信息
6、更新文档信息
7、删除文档信息
8、批量插入【删除、更新,根据传递的参数而定】
9、查找
searchRequest 搜索请求
searchSourceBuilder 条件构造
本文基于狂神说学习整理