ES REST 风格说明

一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁 ,更有层次,更易于实现缓存等机制。

目录

  • ES REST 风格说明
    • 一、ES 索引操作
      • 1. 创建一个索引
      • 2. 指定字段类型
      • 3. 获取具体的索引规则
      • 4. 获取elasticsearch 索引情况!
      • 5. 修改索引 POST
      • 6. 删除索引
    • 二、ES 索引操作
      • 1. 基本操作
      • 2. POST 与 PUT 区别
      • 3. 复杂查询 ( 排序、分页、高亮、模糊查询、标准查询!)
      • 4. 排序 DES降序 ASC升序
      • 5. 数据分页
      • 6. 多条件查询 (精确查询、多值匹配、高亮查询)
        • 多条件查询
        • 精确查询
        • 多个值匹配精确查询
        • 高亮查询

一、ES 索引操作

1. 创建一个索引

写法过时
PUT /索引名/~类型名~/文档id
{请求体}
# PUT 创建命令  test1 索引 type1 类型 1 id
PUT test1/type1/1
{"name": "huang","age": 28
}

2. 指定字段类型

  • 字符串类型
    text keyword 不可分割
  • 数值类型
    long integer short byte double float half_float scaled float
  • 日期类型
    date
  • 布尔值类型
    boolean
  • 二进制类型
    binary
    等等…
    指定字段的类型(创建规则)
PUT test2
{"mappings": {"properties": {"name": {"type": "text"},"age": {"type": "integer"},"birthday": {"type": "date"}}}
}

3. 获取具体的索引规则

GET testdb

展示结果如下:

4. 获取elasticsearch 索引情况!

通过 GET _cat/indices 可以获得 es 当前很多信息

yellow open test2                        m9MASLOYS4ew8ak4vgajgg 1 1    0  0    283b    283b
yellow open test3                        tOBTzR_MS3WKgXRHFqTfrQ 1 1    5  0  18.9kb  18.9kb
green  open .kibana_task_manager_1       DLToH4QiQAqw_BwNwnbYJw 1 0    2  0  41.7kb  41.7kb
green  open kibana_sample_data_ecommerce NNPrBUpmQTOH_MoiCFombw 1 0 4675  0   4.8mb   4.8mb
yellow open testdb                       4txHUmYVTuq1-6_BK1gEqQ 1 1    3  0   7.2kb   7.2kb
green  open .apm-agent-configuration     a8Ut8362QH6lOccv7Mv_GQ 1 0    0  0    283b    283b
yellow open test1                        7-JYTnJvRzGMy3UtVC_GpQ 1 1    1  0   3.7kb   3.7kb
green  open .kibana_1                    _SzMird5TtGgouxdnJIzWA 1 0   74 11 989.3kb 989.3kb

5. 修改索引 POST

POST /test3/_doc/5/_update
{"doc":{"age": 23}
}

展示结果如下:

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

6. 删除索引

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

DELETE damiao

结果展示如下:

{"acknowledged" : true
}

(2)删除记录

DELETE /damiao/_doc/1

结果展示如下:

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

二、ES 索引操作

1. 基本操作

# 添加数据
put /kuangshen/_doc/1
{"name": "狂神说","age": 23,"desc": "一顿操作猛如虎,一看工资2500","tags": ["码农", "技术宅", "直男"]
}put /kuangshen/_doc/2
{"name": "张三","age": 28,"desc": "法外狂徒","tags": ["旅游", "渣男", "交友"]
}put /kuangshen/_doc/3
{"name": "李四","age": 30,"desc": "不知道怎么描述","tags": ["旅游", "靓女", "唱歌"]
}

2. POST 与 PUT 区别

put 与 post update(修改指定项)的差别
put 其他项置空
post 只修改指定项

POST /damiao/_doc/1/_update
{"doc":{"name":"大喵课堂123"}
}

输出结果如下:

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

3. 复杂查询 ( 排序、分页、高亮、模糊查询、标准查询!)

kibana 里查询的参数体使用Json结构

GET damiao/_search
{"query": {"match": {"name": "大喵"}},"_source": ["name","age"]
}

输出结果如下:

{"took" : 4,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 0.5753642,"hits" : [{"_index" : "damiao","_type" : "_doc","_id" : "1","_score" : 0.5753642,"_source" : {"name" : "大喵课堂123"}}]}
}

4. 排序 DES降序 ASC升序

GET damiao/_search
{"query": {"match": {"name": "大喵"}},"sort": [{"age": {"order": "desc"}}]
}

输出结果如下:

{"took" : 2,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 2,"relation" : "eq"},"max_score" : null,"hits" : [{"_index" : "damiao","_type" : "_doc","_id" : "2","_score" : null,"_source" : {"name" : "喵喵课堂","age" : 18,"birth" : "2005-06-15"},"sort" : [18]},{"_index" : "damiao","_type" : "_doc","_id" : "1","_score" : null,"_source" : {"doc" : {"name" : "大喵课堂123"},"name" : "大喵课堂555555","birth" : "2003-06-15","age" : 15},"sort" : [15]}]}
}

5. 数据分页

数据下标还是从0开始的,和学的所有数据结构是一样的!

GET /test3/_doc/_search
{"query":{"bool":{"must": [{"match":{"name":"超人"}}]}},"from": 0, # 数据下标"size": 5 # 每页展示条数
}

6. 多条件查询 (精确查询、多值匹配、高亮查询)

  • 多条件查询 must == and
  • 多条件查询 should == or
  • 多条件查询 must_not == not
GET kuangshen/_search
{"query": {"bool": {"must": [{"match": {"name": "狂神说"}},{"match": {"age": "23"}}]}}
}
  • 过滤查询1 age > 24 gt greater than 大于 gte >= (e equal)
  • 过滤器2 22<age<30 lt less than 小于 lte <= (e equal)
GET kuangshen/_search
{"query": {"bool": {"must": [{"match": {"name": "狂神说"}}],"filter": {"range": {"age": {"gte": 10"lte": 30}  /* 10 <= age <= 30 */}}}}
}

多条件查询

GET kuangshen/_search
{"query": {"match": {"tags": "男 技术"}}
}

精确查询

term 查询是直接通过倒排索引指定的词条进程精确查找的!
关于分词:
term,直接查询精确的
match,会使用分词器解析
mapping介绍:https://www.knowledgedict.com/tutorial/elasticsearch-index-mapping.html

# 创建索引 testdb
PUT testdb
{"mappings": {"properties": {"name":{"type": "text"},"desc":{"type": "keyword"}}}
}# 创建数据
PUT /testdb/_doc/1
{"name": "大喵课堂 damiao classroom","desc": "大喵课堂 是一个非常优秀的网易云学院课堂"
}GET _analyze
{"analyzer": "keyword","text": "大喵课堂 classroom"
}GET _analyze
{"analyzer": "standard","text": "大喵课堂 classroom"
}# 精确查询
GET testdb/_search
{"query":{"term": {"name": "喵"}}
}
GET testdb/_search
{"query":{"term": {"desc": "大喵课堂 是一个非常优秀的网易云学院课堂"}}
}
/*keyword 字段不能被分词器解析*/

多个值匹配精确查询

# 创建数据 模拟查询
PUT testdb/_doc/3
{"t1":"22","t2":"2022-04-06"
}
PUT testdb/_doc/4
{"t1":"33","t2":"2022-04-07"
}GET testdb/_search
{"query":{"bool": {"should": [{"term": {"t1": "22"}},{"term": {"t1": "33"}}]}}
}

输出结果如下:

{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 2,"relation" : "eq"},"max_score" : 0.6931471,"hits" : [{"_index" : "testdb","_type" : "_doc","_id" : "3","_score" : 0.6931471,"_source" : {"t1" : "22","t2" : "2022-04-06"}},{"_index" : "testdb","_type" : "_doc","_id" : "4","_score" : 0.6931471,"_source" : {"t1" : "33","t2" : "2022-04-07"}}]}
}

高亮查询

# 高亮查询
GET test3/_search
{"query": {"match": {"name": "大喵"}},"highlight": {"pre_tags": "<em style='color:red;'>", "post_tags": "</em>", "fields": {"name":{}}}
}

输出结果如下:

{"took" : 8,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 2.677347,"hits" : [{"_index" : "test3","_type" : "_doc","_id" : "1","_score" : 2.677347,"_source" : {"name" : "大喵课堂123","age" : 23,"birth" : "1997-01-05"},"highlight" : {"name" : ["<em style='color:red;'>大</em><em style='color:red;'>喵</em>课堂123"]}}]}
}

ElasticSearch + kibana 基础查询文档大全相关推荐

  1. ElasticSearch入门 第五篇:使用C#查询文档

    网址:http://www.cnblogs.com/ljhdo/p/4550135.html 这是ElasticSearch 2.4 版本系列的第五篇: ElasticSearch入门 第一篇:Win ...

  2. elasticsearch查询文档数量

    查询文档数量时很常见的操作,一般可以直接使用count获取文档数,但是获取到数量信息,在[分页]应用中,意味着需要查询分页然后再查询总数. 有另一种方法,可以让我们在一次查询中获取分页数据并得到总量. ...

  3. days05-DSL查询文档以及对搜索结果进行处理

    一. DSL查询文档 1. DSL查询分类 DSL Query的分类 Elasticsearch提供了基于JSON的DSL(Domain Specific  Language)来定义查询.常见的查询类 ...

  4. 股票期货化数据文档大全覆盖国内6大易的历史数据和实时行情

    原 股票期货量化数据文档大全,覆盖国内6大交易所的历史数据和实时行情 一.基础数据 目前掘金支持上交所, 深交所的股票, 中金所, 上期所, 大商所, 郑商所的期货, 交易标的查询. 可使用get_i ...

  5. 股票期货量化数据文档大全覆盖国内6大交易的史数据和实时行情

    原 股票期货量化数据文档大全,覆盖国内6大交易所的历史数据和实时行情 一.基础数据 目前掘金支持上交所, 深交所的股票, 中金所, 上期所, 大商所, 郑商所的期货, 交易标的查询. 可使用get_i ...

  6. elasticsearch 第五篇(文档操作接口)

    INDEX API 示例: 1 2 3 4 5 PUT /test/user/1 { "name": "silence", "age": 2 ...

  7. 详细描述一下 Elasticsearch 更新和删除文档的过程。

    1.删除和更新也都是写操作,但是 Elasticsearch 中的文档是不可变的,因此不能被删除或者改动以展示其变更. 2.磁盘上的每个段都有一个相应的.del 文件.当删除请求发送后,文档并没有真的 ...

  8. 微服务11_ES:DSL/RestClient查询文档

    微服务11_ES:DSL/RestClient查询文档 一.DSL查询文档 1.DSL Query的分类 1.全文检索查询 match查询示例: multi_match查询示例: 2.精准查询 ter ...

  9. ElasticSearch修改和删除文档

    ElasticSearch修改和删除文档 修改文档方式一:使用prepareUpdate,prepareIndex两者选其一皆可 client.prepareUpdate("blog2&qu ...

  10. 连载三:Oracle升级文档大全

    (共33篇干货文章,建议收藏并在PC端打开) Oracle 11203->11204.6小版本物理升级方案 https://www.modb.pro/doc/190 OEM CC 12.1.0. ...

最新文章

  1. 【组队学习】【27期】动手学数据分析
  2. 钱海丰:农药污染下的土壤微生态响应与风险预测​(今晚7点半)
  3. c语言编程能控制热风炉,利用C语言设计热风炉悬链线拱顶研究.pdf
  4. 关于报表在移动端展现需你需要知道哪些?
  5. python web界面整合 tail_如何使用Python Tornado在HTTP上实现“ tail”?
  6. pythonresponse对象的属性_Scrapy中response属性以及内容提取
  7. 网页 添加QQ/MSN/旺旺 在线聊天代码
  8. 需要多长时间达到一个本科毕业生刚毕业的水平。
  9. sae 微信 java web_[1] 微信公众号与sae的web应用之间的配置
  10. 前端性能优化的七大手段
  11. 分层结构的生活例子_详解软件分层架构设计、工作原理、实例以及具体架构
  12. win10+tensorflow-gpu+pycharm+anaconda...的成功安装,顺利在spyder import tensorflow
  13. 电信IoT平台对接及使用
  14. 3点钟无眠区块链:96小时聊天内容精华全记录
  15. 郭德纲被新浪删掉的博文《人在江湖》,骂功了得
  16. 英语词根记忆法(11)
  17. 阵列卡直通模式和raid模式_DNF:希洛克Raid攻略,一不小心就被全屏秒杀
  18. Unity Live2D 让模型自己动起来 Harmonic Motion Controller 学习使用
  19. 宝藏又小众的东方行走rpg制作大师素材网站分享
  20. Xcode6中如何设置兼容iOS5?

热门文章

  1. eclipse tomcat 热部署
  2. win10开机密码忘记怎么办|win10登陆密码忘记解决方法
  3. 扩展欧几里得模板+例题
  4. 外贸软件进口供应链管理解决方案
  5. arcgis怎么压缩tif文件_PDF文件怎么压缩才能变小?这样压缩,真的很简单!
  6. Euraka配置instanceid显示ip
  7. MySQL数据库环境变量设置
  8. 使用docx4j在线word转换pdf及替换文本域
  9. 深入理解Web Components
  10. 国产6678开发记录