elasticsearch7.6.x 整合springboot2(一)
一、RestFul风格说明
一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交
互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
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 查询所有数据
二、索引的基本操作增删改查
1、创建一个索引
类型名:将来就没有了
PUT /索引名/类型名/文档id
{请求体}
在kibana里面插入
PUT /test1/type/1
{
"name": "科比",
"age": "41"
}
如上图 在head里面看到科比这条数据就被插入进去了
2、用mapping 设置规则,规则里面有properties属性
test2: 类似数据库中的表名
mappings:类似规则
properties : 类似属性
name:类似字段名
type:类似字段属性
PUT /test2
{
"mappings": {
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "long"
},
"birthday": {
"type": "date"
}
}
}
}
如图创建规则
3、创建完规则以后获取test2
GET test2
可以看到设置的索引信息
4、再来创建一个test3
PUT /test3/_doc/1
{
"name": "杜兰特",
"age": 13,
"birth": "1997-01-05"
}
GET test3
如果自己的文档字段没有指定,那么es就会自动默认配置字段类型
扩展:
通过命令elasticsearch索引情况
GET _cat/ 可以获得es当前信息
GET _cat/health 查看健康状况
GET _cat/indices 查看索引库
5、修改
第一种方法:
提交试用PUT进行修改
PUT /test3/_doc/1
{
"name": "杜兰特科比",
"age": 13,
"birth": "1997-01-05"
}
可以看到updated已经修改成功了
第二种方法: POST修改
加上
_update的方式进行修改
POST /test3/_doc/1/_update
{
"doc": {
"name": "法外狂徒张三"
}
}
6、删除
删除索引:
DELETE test1
删除索引下面的文档:
DELETE test3/_doc/1
如上图 发现已经没有数据了
三、索引的复杂查询
1、增加后查询只查询一个属性
PUT /test3/_doc/2
{
"name": "科比",
"age": 13,
"birth": "1997-01-05"
}
GET /test3/_doc/_search
{
"query": {
"match": {
"name": "科比"
}
}
}
如上图:
hits :索引和文档的信息 查询的结果总数
然后就是查询的具体文档
数据中的东西都可以遍历出来
total 意思是有2条
relation 关系是 equal 匹配
通过max_score来判断谁更加符合结果
2、增加后查询按条件查询
GET /test3/_doc/_search
{
"query": {
"match": {
"name": "科比"
}
},
"_source": ["name","age"]
}
过滤
_source
字段
意思是只看需要字段的结果
Java操作es 所有方法和对象就是这里面的key
排序
sort
字段
asc desc对年龄进行排序
GET /test3/_doc/_search
{
"query": {
"match": {
"name": "科比"
}
},
"_source": ["name","age"],
"sort": [
{
"age": {
"order": "desc"
}
}]
}
分页
from
size
from是从第几页开始
size是大小
GET /test3/_doc/_search
{
"query": {
"match": {
"name": "科比"
}
},
"_source": ["name","age"],
"sort": [
{
"age": {
"order": "asc"
}
}],
"from": 0,
"size": 2
}
数据下标还是从0开始
/search/{current}/{pagesize}
布尔查询 返回 true or false
must 意思是所有条件都必须符合
should 意思是满足一个条件就可以
must_not 意思是不是非必须 反向操作
GET /test3/_doc/_search
{
"query": {
"bool": {
"must": [
{
"match":
{
"name": "杜兰特"
}
},
{
"match":
{
"age": 3
}
}
]
}
}
}
过滤器
gt 大于
gte大于等于
lt小于
lte小于等于
FIELD 可以替换为自己想要查询的字段
GET /test3/_doc/_search
{
"query": {
"bool": {
"should": [
{
"match":
{
"name": "杜兰特"
}
},
{
"match":
{
"age": 50
}
}
],
"filter": {
"range": {
"FIELD": {
"gte": 10,
"lte": 20
}
}
}
}
}
}
匹配多个条件
PUT /test3/user/1
{
"name": "杜兰特",
"age": 35,
"desc": "跳投无人能防",
"tags": ["男人","技术","三分王"]
}
GET /test3/_search
{
"query": {
"term": {
"name": "杜"
}
}
}
term可以精确查询
高亮查询
搜索的结果相关
GET /test3/user/_search
{
"query": {
"match": {
"name": "杜兰特"
}
},
"highlight": {
"fields": {
"name": {}
}
}
}
自定义高亮条件
GET /test3/user/_search
{
"query": {
"match": {
"name": "杜兰特"
}
},
"highlight": {
"pre_tags": "<p class='key' style='color:red'>",
"post_tags": "</p>",
"fields": {
"name": {}
}
}
}