Rest风格说明

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

PUT /haima/user/1
{
"name":"狂神说123",
"age":13,
"desc":"我是描述",
"tags":["技术宅","温暖","直男"]
}

返回数据

#! Deprecation: [types removal] Specifying types in document get requests is deprecated, use the /{index}/_doc/{id} endpoint instead.
{
"_index" : "haima",
"_type" : "user",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 7,
"found" : true,
"_source" : {
"name" : "狂神说123",
"age" : 13,
"desc" : "我是描述",
"tags" : [
"技术宅",
"温暖",
"直男"
]
}
}

查询

最简单的搜索是GET

GET /haima/user/1

返回数据

#! Deprecation: [types removal] Specifying types in document get requests is deprecated, use the /{index}/_doc/{id} endpoint instead.
{
"_index" : "haima",
"_type" : "user",
"_id" : "1",
"_version" : 2,
"_seq_no" : 1,
"_primary_term" : 7,
"found" : true,
"_source" : {
"name" : "狂神说123",
"age" : 13,
"desc" : "我是描述",
"tags" : [
"技术宅",
"温暖",
"直男"
]
}
}

多添加几条数据

PUT /haima/user/2
{
"name":"张三说",
"age":22,
"desc":"我是描述22",
"tags":["技术宅","温暖","直男"]
} PUT /haima/user/3
{
"name":"李四说",
"age":33,
"desc":"我是描述33",
"tags":["技术宅","温暖","直男"]
} PUT /haima/user/4
{
"name":"王五说",
"age":44,
"desc":"我是描述44",
"tags":["技术宅","温暖","直男"]
}

  1. 搜索功能search

GET /haima/user/_search?q=name:李四

这边name是text 所以做了分词的查询 如果是keyword就不会分词搜索了


  1. 复杂操作搜索select(排序,分页,高亮,模糊查询,精准查询)
//测试只能一个字段查询
GET lisen/user/_search
{
"query": {
"match": {
"name": "李森"
}
}
}

结果过滤,就是只展示列表中某些字段

GET /haima/user/_search
{
"query": {
"match": {
"name": "李四"
}
},
"_source":["name","age"]
}

字符串包涵 或者查询

es里存的数据为字符串

c_other_tags:"70,80,90"

c_other_tags包涵"70," || c_other_tags包涵"70," || c_other_tags包涵"*,70" || c_other_tags="70"

{
"query": {
"bool": {
"should": [
{
"wildcard": {
"c_other_tags": "70,*"
}
},
{
"wildcard": {
"c_other_tags": "*,70,*"
}
},
{
"wildcard": {
"c_other_tags": "*,70"
}
},
{
"match": {
"c_other_tags.keyword": "70"
}
}
]
}
},
"from": 0,
"size": 10
}

包含(只返回指定字段)

不包含(不返回指定字段,排除字段)

GET /haima/user/_search
{
"query": {
"match": {
"name": "李四"
}
},
"_source":{"excludes":["name","age"]}
}

排序 asc(正序) / desc(倒序)

分页


GET /haima/user/_search
{
"query": {
"match": {
"name": "说"
}
},
"sort":{
"age":{
"order":"asc"
}
},
"from":0,
"size":2
}

多条件查询

布尔值查询

must(and),所有的条件都要符合

GET /haima/user/_search
{
"query":{
"bool": {
"must": [
{
"match": {
"name": "说"
}
},{
"match": {
"age": "22"
}
}
]
}
}
}

should(or)或者的关系,有一个条件成立即可

GET /haima/user/_search
{
"query":{
"bool": {
"should": [
{
"match": {
"name": "王五"
}
},{
"match": {
"age": "44"
}
}
]
}
}
}

must_not(not)不等于

GET /haima/user/_search
{
"query":{
"bool": {
"must_not": [
{
"match": {
"name": "王五"
}
}
]
}
}
}

条件区间

在查询的结果上,过滤年龄区间符合条件的

GET /haima/user/_search
{
"query":{
"bool": {
"must": [
{
"match": {
"name": "王五"
}
}
],
"filter": {
"range": {
"age": {
"gte": 10,
"lte": 50
}
}
}
}
}
}

  • 大于 gt
  • 大于等于 gte
  • 小于 lt
  • 小于等于 lte

匹配多个条件(数组)

GET /haima/user/_search
{
"query":{
"bool": {
"must": [
{
"match": {
"tags": "技术 女"
}
}
]
}
}
}

match没用倒排索引 这边改正一下

精确查找

更多term和match的区别参考下面文档:

https://www.jianshu.com/p/d5583dff4157

term查询是直接通过倒排索引指定的词条进程精确查找的

关于分词

- term,直接查询精确的
- match,会使用分词器解析!(先分析文档,然后通过分析的文档进行查询)

GET _analyze
{
"analyzer":"standard",
"text":"李一封看看"
}
GET _analyze
{
"analyzer":"standard",
"text":"张三说"
}

默认的是被分词了

GET _analyze
{
"analyzer":"keyword",
"text":"狂神说"
}



keyword没有被分词

精确查询多个值

高亮

还能自定义高亮的样式

修改文档

  1. 修改我们可以还是用原来的PUT的命令,根据id来修改



但是如果没有填写的字段 会重置为空了 ,相当于java接口传对象修改,如果只是传id的某些字段,那其他没传的值都为空了。

  1. 还有一种update方法 这种不设置某些值 数据不会丢失
POST /test3/_doc/1/_update
{
"doc":{
"name":"212121"
}
}







GET /test3/_doc/1

  1. 访求三
#修改文档 es7中推荐这种,因为默认只有_doc类型,所以可以省略
POST /test3/_update/1
{
"doc":{
"name":"张三"
}
}

返回结果:

{
"_index" : "test3",
"_type" : "_doc",
"_id" : "1",
"_version" : 8,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 8,
"_primary_term" : 2
}

带doc修改 查询也是带doc的(document)

//下面两种都是会将不修改的值清空的


POST /test3/_doc/1
{
"name":"212121"
} POST /test3/_doc/1
{
"doc":{
"name":"212121"
}
}

删除索引或者文档

关于删除索引或者文档的操作

  1. DELETE /test1 删除索引

  1. DELETE /test1/_doc/1 删除test1索引里主键为1的文档

通过DELETE命令实现删除,根据你的请求来判断是删除索引还是删除文档记录

使用RESTFUL的风格是我们ES推荐大家使用的!

  1. 按搜索条件删除某一索引下所有数据
POST http://127.0.0.1:9200/index_name/type_name/_delete_by_query
{
"query": {"match_all": {}}
}

curl:

curl -u用户名:密码 -XPOST '127.0.0.1:9200/index_name/type_name/_delete_by_query?refresh&slices=5&pretty' -H 'Content-Type: application/json'
-d'{
"query": {
"match_all": {}
}
}'

返回数据:

{
"took": 21832,
"timed_out": false,
"total": 27008,
"deleted": 27008,
"batches": 28,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1.0,
"throttled_until_millis": 0,
"failures": []
}

参考笔记:

https://blog.csdn.net/lisen01070107/article/details/108288037

https://blog.csdn.net/mgdj25/article/details/105740191

https://www.jianshu.com/p/eca8ddb812eb

04 elasticsearch学习笔记-Rest风格说明的更多相关文章

  1. ElasticSearch学习笔记(超详细)

    文章目录 初识ElasticSearch 什么是ElasticSearch ElasticSearch特点 ElasticSearch用途 ElasticSearch底层实现 ElasticSearc ...

  2. Elasticsearch学习笔记一

    Elasticsearch Elasticsearch(以下简称ES)是一款Java语言开发的基于Lucene的高效全文搜索引擎.它提供了一个分布式多用户能力的基于RESTful web接口的全文搜索 ...

  3. elasticsearch学习笔记——相关插件和使用场景

    logstash-input-jdbc学习 ES(elasticsearch缩写)的一大优点就是开源,插件众多.所以扩展起来非常的方便,这也造成了它的生态系统越来越强大.这种开源分享的思想真是与天朝格 ...

  4. 【原】无脑操作:ElasticSearch学习笔记(01)

    开篇来自于经典的“保安的哲学三问”(你是谁,在哪儿,要干嘛) 问题一.ElasticSearch是什么?有什么用处? 答:截至2018年12月28日,从ElasticSearch官网(https:// ...

  5. Elasticsearch学习笔记 一

    本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws. 本文参考和学习资料 <ES权威指南> 一.基本概念 存储数据到ES中的行为叫做 ...

  6. ElasticSearch学习笔记-01 简介、安装、配置与核心概念

    一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进 ...

  7. Elasticsearch学习笔记

    Why Elasticsearch? 由于需要提升项目的搜索质量,最近研究了一下Elasticsearch,一款非常优秀的分布式搜索程序.最开始的一些笔记放到github,这里只是归纳总结一下. 首先 ...

  8. 2018/2/13 ElasticSearch学习笔记三 自动映射以及创建自动映射模版,ElasticSearch聚合查询

    终于把这些命令全敲了一遍,话说ELK技术栈L和K我今天花了一下午全部搞定,学完后还都是花式玩那种...E却学了四天(当然主要是因为之前上班一直没时间学,还有安装服务时出现的各种error真是让我扎心了 ...

  9. 2018/2/11 ELK技术栈之ElasticSearch学习笔记二

    终于有时间记录一下最近学习的知识了,其实除了写下的这些还有很多很多,但懒得一一写下了: ElasticSearch添加修改删除原理:ElasticSearch的倒排索引和文档一旦生成就不允许修改(其实 ...

  10. elasticsearch学习笔记——安装,初步使用

    前言 久仰elasticsearch大名,近年来,fackbook,baidu等大型网站的搜索功能均开始采用elasticsearch,足见其在处理大数据和高并发搜索中的卓越性能.不少其他网站也开始将 ...

随机推荐

  1. KingbaseES V8R6 集群运维案例 -- 禁止普通用户su到root

    案例说明: 在集群管理中,会使用到root权限(如ip.aring命令等),为安全需要,有的生产环境禁止普通用户su切换到root,本案例测试了禁止普通用户su切换到root对集群管理带来的影响. 集 ...

  2. Python爬虫爬取搜狐视频电影并存储到mysql数据库

    数据获取方式:微信搜索关注[靠谱杨阅读人生]回复[电影].整理不易,资源付费,谢谢支持. 代码: 1 import time 2 import traceback 3 import requests ...

  3. #分治 or 线段树+单调栈#CF526F Pudding Monsters

    题目 给定一个 \(n \times n\) 的棋盘,其中有 \(n\) 个棋子,每行每列恰好有一个棋子. 求有多少个 \(k \times k\) 的子棋盘中恰好有 \(k\) 个棋子. 分析 先将 ...

  4. #深搜,期望#CF105B Dark Assembly

    洛谷题目传送门 CODEFORCES传送门 分析 题目强调贿赂要在投票开始前完成说明分糖和成功率可以分开计算 那么分糖考虑直接暴搜,由于题目并没有说糖必须全部分完, 所以每一次分完一颗糖后均要求当前状 ...

  5. 怎么查看摄像头的硬件ID

    1.打开设备管理器:电脑桌面左下角Windows图标点击鼠标右键,点击[设备管理器] 2.展开[照相机] 3.双击摄像头,弹出属性框 4.点击[详细信息],属性点击[硬件ID]

  6. 新手真的别再用过时的jenkins freestyle了,10分钟教你搞定快速编写jenksinfile,快速离线调试

    Pipeline是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化.它通过Domain Specific Langua ...

  7. HarmonyOS Lottie组件,让动画绘制更简单

    原文:https://mp.weixin.qq.com/s/eC7g9ya4f_2AiNgteiyXcw,点击链接查看更多技术内容. 动画是UI界面的重要元素之一,精心设计的动画能使UI界面更直观,有 ...

  8. 4天带你上手HarmonyOS ArkUI开发——《HarmonyOS ArkUI入门训练营之健康生活实战》

     <HarmonyOS ArkUI入门训练营之健康饮食应用>是面向入门开发者打造的实战课程系列.特邀华为终端BG高级开发工程师作为本次训练营讲师,以健康饮食为例,开展技术教学及实战案例分享 ...

  9. Vue保持用户登录状态(各种token存储方式)

    目录 怎么设置Cookie Cookie的缺点: LocalStorage与SessionStorage存储Token LocalStorage与SessionStorage的主要区别: Vuex存储 ...

  10. React中受控组件和非受控组件

    一.受控组件 受控组件,简单来讲,就是受我们控制的组件,组件的状态全程响应外部数据 举个简单的例子: class TestComponent extends React.Component { con ...