【小白笔记】Elastic Search使用Rest风格请求的CRUD
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【小白笔记】Elastic Search使用Rest风格请求的CRUD,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4660字,纯文字阅读大概需要7分钟。
内容图文
Rest风格说明
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 | 查询所有数据 |
关于索引以及文档的基本操作
增
创建一个文档
PUT?/索引名/--类型名--/文档id
{
??请求体
}![](/Users/weihaolee/Library/Application Support/typora-user-images/截屏2021-02-26 12.54.58.png)
完成了自动增加索引 数据也成功的添加了
配置字段类型
PUT?/test2
{
??"mappings":?{
????"properties":?{
??????"name":?{
????????"type":?"text"
??????},
??????"age"?:{
????????"type":?"long"
??????},
??????"birthday":?{
????????"type":?"date"
??????}
????}
??}
}
查
查看数据
POST?/test3/_search
查看字段类型
GET?test2
默认字段类型
- 添加数据
PUT?/test3/_doc/1
{
??"name":?"SkyID",
??"age":?21,
??"birth":?"2000-08-23"
}
- 查看自动分配的字段类型
如果自己的文档字段没有指定,那么es就会给我们默认配置字段类型
扩展:通过命令elastic search索引情况 通过GET _cat/ 可以获取当前es的更多信息
根据指定内容匹配
#根据name进行搜索(简单查询)
GET?/sky/user/_search?q=name:Sky
#对于复杂条件标准写法?_source选择展示的数据?sort为排序?
#from和size为分页功能??
#from表示从第几个数据开始?size表示返回多少条数据(单页面数据)
GET?/sky/user/_search
{
??"query":{
????"match":?{
??????"name":"Sky"
????}
??},
??"_source":["name","desc"],
??"sort":[
??????{
????????"age":{
??????????"order":?"desc"
????????}
??????}
????],
???"from":?0,
????"size":?1
}布尔值查询
多条件查询 must(相当于and),所有的条件都要符合
GET?/sky/_search
{
??"query":{
????"bool":?{
??????"must":?[
????????{
??????????"match":?{
????????????"name":?"潭"
??????????}
????????},
????????{
??????????"match":?{
????????????"age":?"2"
??????????}
????????}
??????]
????}
??}
}多条件查询 should(相当于or),满足一个就可以
GET?/sky/_search
{
??"query":{
????"bool":?{
??????"should":?[
????????{
??????????"match":?{
????????????"name":?"潭"
??????????}
????????},
????????{
??????????"match":?{
????????????"age":?"2"
??????????}
????????}
??????]
????}
??}
}多条件查询 must_not(相当于not),满足一个就可以
GET?/sky/_search
{
??"query":{
????"bool":?{
??????"must_not":?[
????????{
??????????"match":?{
????????????"name":?"潭"
??????????}
????????},
????????{
??????????"match":?{
????????????"age":?"2"
??????????}
????????}
??????]
????}
??}
}过滤器 filter (gt大于、gte大于等于、lt小于、lte小于等于、eq等于)
GET?/sky/_search
{
??"query":{
????"bool":?{
??????"must":?[
????????{
??????????"match":?{
????????????"name":?"潭"
??????????}
????????}
??????],
??????"filter":?[
????????{
??????????"range":?{
????????????"age":?{
??????????????"gt":?10
????????????}
??????????}
????????}
??????]
????}
??}
}多条件查询 多个条件使用空格隔开进行查询 只要满足其一便可被查出来 通过分值进行基本的判断
GET?/sky/_search
{
??"query":{
???"match":?{
?????"tags":?"男?王"
???}
??}
}精确查询
term查询是直接通过倒排索引指定的词条进程精确查找的
关于分词:
term,直接查询精确 搭配keyword使用
match 会使用分词器解析 (先分析文档,然后在通过分析的文档进行查询)
「两个类型 text keyword」
创建测试文档
#?设定索引类型
PUT?/testdb
{
??"mappings":?{
????"properties":?{
??????"name":{
????????"type":?"text"
??????},
??????"desc":?{
????????"type":?"keyword"
??????}
????}
??}
}
#?添加两条数据用于测试
PUT?/testdb/_doc/1
{
??"name":?"李维昊",
??"desc":?"我是一个程序员"
}
PUT?/testdb/_doc/2
{
??"name":?"李维昊2",
??"desc":?"我是一个程序员2"
}查询name(text类型)
GET?testdb/_search
{
??"query":?{
????"term":?{
??????"name":?"李"
????}
??}
}两条信息均有返回
查询desc(keyword类型)
GET?testdb/_search
{
??"query":?{
????"term":?{
??????"desc":?"我是一个程序员"
????}
??}
}返回结果仅为一个
并且如果我们改为单字搜索发现
GET?testdb/_search
{
??"query":?{
????"term":?{
??????"desc":?"程"
????}
??}
}发现无返回结果
高亮查询
GET?testdb/_search
{
??"query":?{
????"match":?{
??????"name":?"李维昊"
????}
??},
??"highlight":?{
????"fields":?{
??????"name":?{}
????}
??}
}查看返回结果发现「李维昊」添加了标签
同样的我们可以自定义返回标签
GET?testdb/_search
{
??"query":?{
????"match":?{
??????"name":?"李维昊"
????}
??},
??"highlight":?{
????"pre_tags":?"<p>",?
????"post_tags":?"</p>",?
????"fields":?{
??????"name":?{}
????}
??}
}
改
在Elastic Search当中我们有可以使用两种方式进行数据修改
重新使用PUT值进行添加数据
首先查询文档当前内容
POST?/test3/_search
使用PUT重新添加数据(将名字修改)
PUT?/test3/_doc/1
{
??"name":?"WeiHao.L",
??"age":?21,
??"birth":?"2000-08-23"
}执行指令,通过es返回的json信息我们可以看到其中的version版本变为了2。证明我们此索引数据进行了更新
再次使用search进行查询,更新成功
但是这种方式的缺点为如果我们忘记输入某一项的值 会出现单条记录被清空的情况(如图 name被清空)
使用POST方法进行update
此方法仅需将需要更新的数据进行发送请求即可
POST?/test3/_doc/1/_update
{
??"doc"?:{
????"name":?"Sky"
??}
}更新成功
删
DELETE test1
内容总结
以上是互联网集市为您收集整理的【小白笔记】Elastic Search使用Rest风格请求的CRUD全部内容,希望文章能够帮你解决【小白笔记】Elastic Search使用Rest风格请求的CRUD所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。