基于restful风格的基本ES索引增删改查操作
- 一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更筒洁,更有层次,更易于实现缓存等机制。
基本Rest命令说明
method | url地址 | 描述 |
---|---|---|
PUT | localhost:9200/索引名称/类型名称/文档id | 创建文档(指定文档d) |
POST | localhost:9200/索引名称/类型名称 | 创建文档(随机文档id) |
POST | locahost:9200/索引名称/类型名称/文档id/_ update | 修改文档 |
DELETE | localhost::9200/索引名称/类型名称/文档id | 删除文档 |
GET | localhost:9200/索引名称/类型名称文档id | 查询文档通过文档d |
POST | localhost::9200/索引名称/类型名称/_search | 查询所有数据 |
索引的基本操作
运行es,kibana、es-head
创建一个索引
PUT /索引名/~类型名~/文档id{ 请求体}
完成了自动増加了索引!数据也成功的添加了
那么name这个字段用不用指定类型呢。毕亮我们关系型数据库是需要指定类型的啊
默认类型:
- 字符串类型:text、keyword
- 数值类型:ling,integer,short,byte,double,float,half float,scaled float
- 日期类型:date
- te布尔值类型:boolean
- 二进制类型:binary
- 等等
指定字段的类型
PUT /test2{ "mappings": { "properties": { "name":{ "type": "text" }, "age":{ "type": "long" }, "birthday":{ "type": "date" } } }}
获取索引信息
GET /索引名/~类型名~/文档id
如果自己的文档字段没有指定,那么es就会给我们默认配置字段类型
展:通过命令 elasticsearch索引情況!通过get_cat/可以获得es的当前的很多信息!
修改索引状态
POST /索引名称/类型名称/文档名称/_update
PUT /test3/_doc/1{ "name":"joker", "age":18, "sex":"男"}POST /test3/_doc/1/_update{ "doc":{ "name":"joker_dj" }}
删除索引
通过 DELETE命令实现州除、根据你的请求来判断是删除索引还是删除文档记录!
DELETE /索引名称/类型名称/文档名称
删除指定文档
DELETE 索引名称/类型名称/文档id{ 方法体}例:DELETE test3/_doc/1{ "name":"joker_dj"}
文档的基本操作
基本操作
创建索引
PUT /joker/user/1{ "name":"joker_dj", "age":18, "desc":"java小萌新", "tags":["技术宅","直男"]}PUT /joker/user/1{ "name":"joker_dj", "age":18, "desc":"java小萌新", "tags":["技术宅","直男"]}PUT /joker/user/3{ "name":"李四", "age":5, "desc":"合伙人", "tags":["坏人"]}
获取文档
GET /索引名称/类型名称/文档id
修改文档
重新put一边就是修改 (不推荐)
version就是数据被改动的次数
POST _update,推荐使用这种更新方式
POST /索引名称/类型名称/文档id/_update{ "doc":{ "fieds":"value" }}POST /joker/user/3/_update{ "doc":{ "name":"张三的哥哥李四" }}
文档搜索
简单的搜索
GET /索引名称/[类型名称]/[文档id]
高级搜索 条件查询
GET /索引名称/[类型名称]/_search?q=fieds:value
复杂操作搜索 select(排序,分页,高亮,模糊査询,精准查询!)
根据_score分数进行排序 查看谁最匹配
只要文档中包含value的就会被查出来 前提是被分词器捕获GET /索引名称/类型名称/_search{ "query": { "match": { "fileds": "value" } }}GET /joker/user/_search{ "query": { "match": { "name": "张三" } }}
过滤字段
GET /索引名称/类型名称/_search{ "query": { "match": { "fileds": "value" } }, "_source": ["fileds","fileds"]}GET /joker/user/_search{ "query": { "match": { "name": "张三" } }, "_source": ["desc","name"]}
排序
GET /索引名称/类型名称/_search{ "query": { "match": { "fileds": "value" } }, "_source": ["fileds","fileds"], "sort": [ { "fileds": { "order": "desc" } } ]}例:GET /joker/user/_search{ "query": { "match": { "name": "张三" } }, "_source": ["desc","name","age"], "sort": [ { "age": { "order": "desc" } } ]}
分页查询
GET /joker/user/_search{ "query": { "match": { "name": "张三" } }, "from": 0, # 起始值 page "size": 20 # 查询大小 pageSize}
数据下标还是从0开始的,和学的所有数据结构是一样的!
/seach/{current}/{pageSize}
布尔查询
多条件查询
must 相当于 and
GET /joker/user/_search{ "query": { "bool": { "must ": [ { "match": { "name": "张三" } }, { "match": { "age": 5 } } ] } }}
should相当于 or
GET /joker/user/_search{ "query": { "bool": { "should": [ { "match": { "name": "张三" } }, { "match": { "age": 5 } } ] } }}
not操作
GET /joker/user/_search{ "query": { "bool": { "must_not": [ { "match": { "name": "张三" } }, { "match": { "age": 5 } } ] } }}
过滤器 filter
GET /joker/user/_search{ "query": { "bool": { "must_not": [ { "match": { "name": "张三" } } ], "filter": { "range": { "age": { "gt": 1, } } } } }}
筛选年龄大于1
- gt 大于
- lt 小于
- gte 大于等于
- lte 小于等于
匹配多个条件
多个条件之间使用空格隔开
只满足其中一个即可查出
通过分值基本判断
精确查询
term查询是直接通过倒排索引指定的词条进程精确的查找的!
关于分词:
- term :直接查询精确的
- match:会使用分词器解析!(先分析文档,然后在通过分析的文档进行查询!)
两个类型 text 、 keyword
keyword不会被分词器解析
text 会被分词器解析
多个值匹配的精确查询
高亮查询
GET /joker/user/_search{ "query": { "match": { "name":"张三" } }, "highlight": { "fields": { "name":{ } } }}
自定义高亮标签
GET /joker/user/_search{ "query": { "match": { "name":"张三" } }, "highlight": { "pre_tags":"<p class='key' style='color:red'>", "post_tags":"</p>", "fields": { "name":{ } } }}