ElasticSearch的ResultFul风格
基于Rest命令说明
基础测试
创建一个索引
put /索引名/类型名/文档id
{
请求体
}
可以再head里面看到里面多了一个test1。
从下面的图中可以看到本质上就是往里面put了一条数据。完成之后自动添加索引,所以我们可以暂时把他理解为数据库。
字段常用类型介绍
这里elasticSearch
字符串类型
text、keyword
数值类型
long、integer、short、byte、double、float、half float、scaled float
日期类型
date
布尔值类型
boolean
二进制类型
binary
自定义字段类型
PUT /test2
{
"mappings": {
"properties": {
"name":{
"type": "text"
},
"age":{
"type": "long"
},
"birthday":{
"type": "date"
}
}
}
}
单纯地建立索引,定义规则,也就是数据的类型。
get命令查看数据。
创建第三个
PUT /test3/_doc/1
{
"name":"北海冥鱼未眠",
"age":3,
"birthday":"2000-09-07"
}
查看信息
GET /test3
可以看到这里的类型是自动匹配的。
利用_cat命令查看信息
更新数据
第一种方式更新数据,version会改变,版本号会增加。显示状态为update
第二种更新数据的方式
POST /test3/_doc/1/_update
{
"doc":{
"name":"爱蜜加油"
}
}
删除一个库
注意:删除命令精确到文档就是删除文档,没有的话,如果只是精确到库,那么就会删除库。
关于文档的基本操作
基本操作
PUT /dongmu/user/1
{
"name":"北海",
"age":22,
"desc":"怕什么真理无穷,进一步有进一步的欢喜",
"tags":["直男","技术宅","暖男"]
}
再插入几条数据
get查询命令
GET /dongmu/user/2
更新数据put
PUT /dongmu/user/2
{
"name":"张三222",
"age":18,
"desc":"法外狂徒,进一步有进一步的欢喜",
"tags":["直男","懒虫"]
}
更新数据post
更新数据用put,但是也可以使用提交数据的post方式更新数据。
POST /dongmu/user/1/_update
{
"doc":{
"name":"冬木"
}
}
要注意post和put更新数据的区别,post方式是更新数据,可以只是单纯地更新某一部分。put则是重新添加数据,就是覆盖原来的数据,如果put的数据里面没有某个字段,那么更新之后原本存在的某一个字段也会消失。
查询get
GET dongmu/user/_search?q=name:张三222
GET dongmu/user/_search
{
"query":{
"match":{
"name":"张三"
}
}
}
GET dongmu/user/_search
{
"query":{
"match":{
"name":"张三"
}
},
"sort": [
{
"age": {
"order": "asc"
}
}
],
"from": 0,
"size": 2
}
条件查询
注意:must相当于是and;也就是两个条件必须都满足
查询结果过滤
倒排索引:倒排索引是实现“单词-文档矩阵”的一种具体存储形式,通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。倒排索引主要由两个部分组成:“单词词典”和“倒排文件”。
精确查询:
term:直接查询精确的,通过倒排索引指定的词条进行精确查找的。
match:会使用分词器解析,先解析文档,然后通过分析的文档进行查询。
PUT testdb/_doc/3
{
"t1":"22",
"t2":"2022-4-10"
}
PUT testdb/_doc/4
{
"t1":33,
"t2":"2022-4-10"
}
GET testdb/_search
{
"query": {
"bool": {
"should": [
{
"term": {
"t1": "22"
}
},
{
"term": {
"t1": "33"
}
}
]
}
高亮查询
GET dongmu/user/_search
{
"query": {
"match": {
"name": "张三 冬木"
}
},
"highlight": {
"fields": {
"name":{}
}
}
}
自定义高亮的标签
GET dongmu/user/_search
{
"query": {
"match": {
"name": "张三 冬木"
}
},
"highlight": {
"pre_tags": "<p class='key' style='color:red'>",
"post_tags": "</p>",
"fields": {
"name":{}
}
}
}