文章目录

  • 1 Rest风格说明
    • 1.1 创建一个索引
      • 1.1.1 字段类型:
      • 1.1.2 获取索引信息
      • 1.1.3 查看索引默认信息
      • 1.2 其他 _cat
    • 1.2 修改
      • 1.2.1 PUT覆盖
      • 1.2.2 POST更新
    • 1.3 删除索引
  • 2 文档基本操作
    • 2.1 基本操作
      • 2.1.1 添加数据
      • 2.1.2 查数据
      • 2.1.3 更新数据 PUT
      • 2.1.4 更新数据 POST (推荐)
    • 2.2 复杂查询
      • 2.2.1 模糊查询
      • 2.2.2 _source: 结果过滤
      • 2.2.3 sort: 排序
      • 2.2.4 分页
      • 2.2.5 bool 多条件精确查询
      • 2.2.6 范围过滤
      • 2.2.7 匹配多个 条件多条件 空格隔开
      • 2.2.8 精确查询
      • 2.2.9 精确查询 多个值
      • 2.2.10 高亮查询

官网:
https://www.elastic.co/guide/en/enterprise-search-clients/index.html

1 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 查询所有数据

1.1 创建一个索引

localhost:9200/索引名称/类型名称/文档id

PUT /test1/type1/1
{"name": "有勇气的牛排","age": 18
}

1.1.1 字段类型:

字符串类型: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"}}}
}

1.1.2 获取索引信息

# 获取当前索引信息
GET test2

1.1.3 查看索引默认信息

PUT /test3/_doc/1
{"name":"有勇气的牛排","age": 18,"birthday": "2010-05-20"
}

GET test3

1.2 其他 _cat

# _cat 查看默认配置
# 获取数据库健康值
GET _cat/health

1.2 修改

1.2.1 PUT覆盖

重复执行

PUT /test3/_doc/1
{"name":"有勇气的牛排","age": 18,"birthday": "2010-05-20"
}

1.2.2 POST更新

# 创建/更新
PUT /test3/_doc/1
{"name":"有勇气的牛排","age": 18,"birthday": "2010-05-20"
}# 更新
POST /test3/_doc/1/_update
{"doc":{"name": "大哥"}
}

1.3 删除索引

更具路径判断删除索引还是文档

# 删除指定索引
DELETE test1

2 文档基本操作

2.1 基本操作

2.1.1 添加数据


PUT /vitcloud/user/2
{"name":"大漂亮","age": 17,"desc": "女主","tags":["旅游","轻音乐","弹琴"]
}

2.1.2 查数据

GET /vitcloud/user/2# 精确搜索
GET /vitcloud/user/_search?q=name:黑客

2.1.3 更新数据 PUT

如果不传值,会被覆盖

PUT /vitcloud/user/2
{"name":"大漂亮2号","age": 17,"desc": "女主","tags":["旅游","轻音乐","弹琴"]
}

2.1.4 更新数据 POST (推荐)

POST /vitcloud/user/1/_update
{"doc":{"name":"大漂亮2号"}
}

2.2 复杂查询

2.2.1 模糊查询

GET /vitcloud/user/_search
{"query":{"match": {"name": "有勇气"}}
}

2.2.2 _source: 结果过滤


GET /vitcloud/user/_search
{"query":{"match": {"name": "有勇气"}},"_source":["name","desc"]
}

2.2.3 sort: 排序

GET /vitcloud/user/_search
{"query":{"match": {"name": "有勇气"}},"sort": [{"age":{"order": "desc"}}]
}

2.2.4 分页

/search/{current}/{pagesize}
from: 从第几条开始
size: 显示多少条

GET /vitcloud/user/_search
{"query":{"match": {"name": "有勇气"}},"_source":["name","desc"],"from": 0,"size": 2
}

2.2.5 bool 多条件精确查询

must:都满足
must_not:不满足的
should:满足一个即可

GET /vitcloud/user/_search
{"query":{"bool": {"must": [{"match": {"name": "有勇气"}},{"match": {"tags": "旅游"}}]}}
}

2.2.6 范围过滤

  • gt: 大于
  • lt: 小于
  • gte: 大于等于
  • lte: 小于等于
GET /vitcloud/user/_search
{"query":{"bool": {"must": [{"match": {"name": "有勇气"}},"filter":{"range":{"age":{"gt":10,"lt":30}}}]}}
}

2.2.7 匹配多个 条件多条件 空格隔开

GET /vitcloud/user/_search
{"query":{"match": {"tags": "游 音乐"}}
}

2.2.8 精确查询

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

关于分词

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

keyword不会被分词

2.2.9 精确查询 多个值

# 添加数据
PUT /vitcloud/_doc/1
{"t1": "22","t2": "2022-02-22"
}PUT /vitcloud/_doc/2
{"t1": "33","t2": "2022-02-23"
}
GET vitcloud/_search
{"query": {"bool": {"should": [{"term": {"t1": "22"}},{"term": {"t1": "33"}}]}}
}

2.2.10 高亮查询

默认为em标签

GET vitcloud/user/_search
{"query": {"match":{"name": "有勇气"}},"highlight": {"fields": {"name":{}}}
}

自定义标签

GET vitcloud/user/_search
{"query": {"match":{"name": "有勇气"}},"highlight": {"pre_tags": "<p class='key' style='color:red'>","post_tags": "</p>", "fields": {"name":{}}}
}

来源
狂神说:https://www.bilibili.com/video/BV17a4y1x7zq

Elasticearch 查询详解 (二)相关推荐

  1. ES聚合查询详解(二):桶聚合

    前言 前面介绍了ES的简单使用,并说明了ES聚合查询主要分为3类:指标聚合.桶聚合和管道聚合. 本文主要是介绍其中桶聚合的相关使用. 一.桶聚合 Bucket 聚合不像Metric聚合那样计算字段上的 ...

  2. Android Loader 异步加载详解二:探寻Loader内部机制

    Android Loader 异步加载详解二:探寻Loader内部机制 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/7025991 ...

  3. from mysql partition select_爬虫(九十九)mysql详解二

    **mysql中字段的常见类型: ** 二进制位 bit(长度) tinyint[(长度)] [有无符号unsigned] [位数低于长度时候是否填充零zerofill] 有符号表示范围-128 ~ ...

  4. 爬虫入门之urllib库详解(二)

    爬虫入门之urllib库详解(二) 1 urllib模块 urllib模块是一个运用于URL的包 urllib.request用于访问和读取URLS urllib.error包括了所有urllib.r ...

  5. Android面试Hash原理详解二

    Hash系列目录 Android面试Hash原理详解一 Android面试Hash原理详解二 Android面试Hash常见算法 Android面试Hash算法案例 Android面试Hash原理详解 ...

  6. Mysql 多表查询详解

    Mysql 多表查询详解 一.前言  二.示例 三.注意事项 一.前言  上篇讲到Mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...

  7. mysql单表查询实例_MySQL简单查询详解-单表查询

    MySQL简单查询详解-单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询的执行路径 一条SQL查询语句的执行过程大致如下图所示: 1>.客户端和服务端通过my ...

  8. Elasticsearch实战——function_score 查询详解

    Elasticsearch实战--function_score 查询详解 文章目录 Elasticsearch实战--function_score 查询详解 1. function_score简介 2 ...

  9. 安卓 linux init.rc,[原创]Android init.rc文件解析过程详解(二)

    Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...

最新文章

  1. 10.11杭州Clouder lab 十分钟搭建共享应用 2:如何通过日志服务实现用户的日志收集与分析...
  2. 深入浅出全面解析RDMA
  3. 异步调用WebService方式!
  4. 请求接受json tp5_关于jq jsonp跨域请求错误处理bug
  5. JSP/Servlet中的几个编码的作用
  6. java rmi 文件传输_JAVA-RMI实现大文件传输
  7. spring-boot-starter-parent的主要作用
  8. CreateInstance 方法解析
  9. idea redis 插件_Redis客户端RDM收费后,还有那些开源的替代品呢?
  10. IntelliJ IDEA使用技巧(五)——页面乱码和控制台乱码
  11. AMD GPU 系列版本信息
  12. centos安装uWSGI失败处理办法Exception: you need a C compiler to build uWSGI
  13. linux下img文件 windows查看器,Windows server 2016 设置使用照片查看器查看图片
  14. 将OpenCV抓拍的图片进行x264编码并保存到文件
  15. 测试工程师多年面试问题整理
  16. iOS印象笔记添加到Siri捷径,怎么实现的?
  17. 视觉SLAM十四讲-第九讲例程运行出错
  18. linux更改oracle所属组,Linux更改oracle用户组实验
  19. 青云云服务器怎么上传文件,青云QingCloud发布文件存储,进一步完善软件定义存储解决方案...
  20. 团队作业-博客2(团队介绍)

热门文章

  1. [WCF 4.0新特性] 默认终结点
  2. 高通Vuforia优化目标检测与跟踪稳定性
  3. 【打CF,学算法——二星级】Codeforces Round #313 (Div. 2) B. Gerald is into Art(水题)...
  4. 原创经验:微信小程序开发总结
  5. DPM系列之一:安装dpm与attach dpmagent
  6. Ajax学习(6)---服务器端脚本和程序中用 JSON 进行响应和回复
  7. jquery after append appendTo三个函数的区别
  8. Struts2+Hibernate分页显示实例
  9. Android View与GroupView原理以及其子类描述
  10. HASH 大量插入与查询