当前位置: 首页 > news >正文

Elasticsearch的RESTful Api使用

Elasticsearch的RESTful Api使用

文章目录

  • Elasticsearch的RESTful Api使用
    • 查询集群健康情况
    • 查看所有索引
    • 其他的_cat命令
    • 创建索引
    • 删除索引
    • 修改索引
    • 查看索引
    • 创建文档
    • 批量操作文档
    • 删除文档
    • 查询文档
    • 全量更新文档
    • 局部更新文档
    • 索引的搜索
    • 分词分析
    • 分数说明
    • 查询类型分析

查询集群健康情况

GET /_cat/health?v

?v表示显示头信息

参数说明:

  • cluster:集群名称
  • status:集群状态 green 集群一切正常;yellow 集群不可靠但可用;red 集群不可用,有故障
  • node.total:节点总数量
  • node.data:数据节点的数量
  • shards:存活的分片数量
  • pri:主分片数量
  • relo:迁移中的分片数量
  • init:初始化中的分片数量
  • unassign:未分配的分片
  • pending_tasks:准备中的任务
  • max_task_wait_time:任务最长等待时间
  • active_shards_percent:激活的分片百分比

查看所有索引

GET /_cat/indices?v

若响应health status index uuid pri rep docs.count docs.deleted store.size pri.store.size说明集群中还没有索引

  • health:索引状态 green 集群完整;yellow 单点正常、集群不完整;red 单点不正常
  • status:是否能使用
  • index:索引名
  • uuid:索引统一编号
  • pri:主节点几个分片
  • rep:从节点几个(副本数)
  • docs.count:文档数
  • docs.deleted:文档被删了多少
  • store.size:整体占空间大小
  • pri.store.size:主节点占空间大小

其他的_cat命令

命令描述
/_cat/allocation查看单节点的shard分配整体情况
/_cat/shards查看所有shard的详细情况
/_cat/shards/{index}查看指定分片的详细情况
/_cat/master查看master节点信息
/_cat/nodes查看所有节点信息
/_cat/indices/{index}查看集群中指定index的详细信息
/_cat/segments查看各index的segment详细信息,包括segment名,所属shard,内存(磁盘)占用大小,是否刷盘
/_cat/segments/{index}查看指定index的segment详细信息
/_cat/count查看当前集群的doc数量
/_cat/count/{index}查看指定索引的doc数量
/_cat/recovery查看集群内每个shard的修复状态
/_cat/recovery/{index}查看指定索引shard的修复状态
/_cat/pending_tasks查看当前集群的pending task
/_cat/aliases查看集群中所有alias信息,路由配置等
/_cat/aliases/{alias}查看指定索引的alias信息
/_cat/thread_pool查看集群各节点内部不同类型的threadpool的统计信息
/_cat/plugins查看集群各个节点上的plugin信息
/_cat/fielddata查看当前集群各个节点的fielddata内存使用情况
/_cat/fielddata/{fields}查看指定field的内存使用情况,里面传field属性对应的值
/_cat/nodeattrs查看单节点的自定义属性
/_cat/repositories输出集群中注册快照存储库
/_cat/templates输出当前正在存在的模板信息

创建索引

PUT /movie?pretty

?pretty表示格式化JSON响应

索引名称长度不超过255个字符,不可使用特殊字符,可使用下划线(_)、加号(+)、减号(-)但不可以以它们开头。

可以在创建索引时定义mapping等属性,search_analyzer属性默认与analyzer属性一致:

PUT /movie
{"mappings": {"properties": {"actorList": {"properties": {"gender": {"type": "long"},"name": {"type": "text","analyzer": "ik_max_word"}}},"doubanScore": {"type": "float"},"id": {"type": "long"},"name": {"type": "text","analyzer": "ik_max_word","search_analyzer": "ik_smart"}}}
}

删除索引

DELETE /movie

修改索引

已经存在的mapping属性是无法修改的,只能做新增,例如下面修改分析器的操作就会失败:

POST /movie/_mappings
{"properties": {"name": {"type": "text","analyzer": "standard","search_analyzer": "standard"}}
}

会报与已存在mapper冲突的错误:

{"error": {"root_cause": [{"type": "illegal_argument_exception","reason": """Mapper for [name] conflicts with existing mapper:Cannot update parameter [analyzer] from [ik_max_word] to [standard]"""}],"type": "illegal_argument_exception","reason": """Mapper for [name] conflicts with existing mapper:Cannot update parameter [analyzer] from [ik_max_word] to [standard]"""},"status": 400
}

查看索引

GET /movie

查看索引自身信息,包括mappings、settings等,可以直接指定端点查询GET /movie/_mappings

创建文档

POST /movie/_doc/1
{"id": 100,"name": "流浪地球","doubanScore": 7.9,"actorList": [{"gender": 1,"name": "吴京"},{"gender": 1,"name": "吴孟达"}]
}

可以指定文档ID,不指定由系统随机生成ID串

批量操作文档

Elasticsearch支持使用_bulk端点批量操作文档,奇数行是操作描述,偶数行是文档数据,当索引不存在时会自动创建

  • create 如果文档不存在就创建,但如果文档存在就返回错误
  • index 如果文档不存在就创建,如果文档存在就更新
  • update 更新一个文档,如果文档不存在就返回错误
  • delete 删除一个文档,如果要删除的文档id不存在,就返回错误
POST /movie/_bulk
{"create":{"_id":1}}
{"id":100,"name":"流浪地球","doubanScore":7.9,"actorList":[{"gender":1,"name":"吴京"},{"gender":1,"name":"吴孟达"}]}
{"create":{"_id":2}}
{"id":200,"name":"流浪地球2","doubanScore":8.2,"actorList":[{"gender":1,"name":"吴京"},{"gender":1,"name":"沙溢"}]}
{"create":{"_id":3}}
{"id":300,"name":"满江红","doubanScore":7.4,"actorList":[{"gender":1,"name":"张译"}]}

也可以这样操作,姿势很多

POST /_bulk
{"create":{"_index":"movie","_id":1}}
{"id":100,"name":"流浪地球","doubanScore":7.9,"actorList":[{"gender":1,"name":"吴京"},{"gender":1,"name":"吴孟达"}]}
{"create":{"_index":"movie","_id":2}}
{"id":200,"name":"流浪地球2","doubanScore":8.2,"actorList":[{"gender":1,"name":"吴京"},{"gender":1,"name":"沙溢"}]}
{"create":{"_index":"movie","_id":3}}
{"id":300,"name":"满江红","doubanScore":7.4,"actorList":[{"gender":1,"name":"张译"}]}

当然也可以先创建索引再进行_bulk

删除文档

DELETE /movie/_doc/1

查询文档

GET /movie/_doc/1

全量更新文档

PUT /movie/_doc/1
{"id": 100,"name": "流浪地球","doubanScore": 8,"actorList": [{"gender": 1,"name": "吴京"},{"gender": 1,"name": "吴孟达"},{"gender": 0,"name": "李光洁"}]
}

局部更新文档

POST /movie/_update/1
{"doc": {"doubanScore": 8}
}

索引的搜索

GET /movie/_search

共有两种:

  1. URI Search
    • 操作简便,方便通过命令行测试
    • 但是仅包含部分查询语法
  2. Request Body Search
    • es 最常用的方式,查询丰富。
    • 提供的完备查询语法Query DSL(Domain Specific Language)

分词分析

帮助分析某个analyzer是如何分析和索引一段文字

POST _analyze
{"analyzer": "standard","text": "我们都是中国人"
}

分数说明

提供查询结果的分数说明

GET /movie/_explain/1
{"query": {"match": {"name": "流浪地球"}}
}

查询类型分析

通过profile属性,分析查询类型为PhraseQueryTermQueryBooleanQuery等类型中的哪一种

GET /movie/_search?q=name:(地球 红)
{"profile": true
}
http://www.lryc.cn/news/28986.html

相关文章:

  • 软著申请需要注意的
  • SpringBoot入门 - 添加Logback日志
  • 社会实践报告
  • LeetCode 460. LFU 缓存 -- 哈希查询+双向链表
  • Dubbo 源码分析 – SPI 机制
  • JDBC概述二(JDBC编程+案例展示)
  • 广度和深度优先搜索解析与示例代码
  • 基于SLIC超像素的归一化分割算法
  • C语言刷题(4)——“C”
  • 带你看懂RuoYi动态数据源切换
  • 家有女儿必看:盲目的和青春期女儿较劲,不如掌握4个沟通技巧
  • 【VC 7/8】vCenter Server 基于文件的备份和还原Ⅰ——基于文件的备份和还原的注意事项和限制
  • 【ROS学习笔记10】ROS中配置自定义Cpp头文件和导入自定义Python库
  • svn 分支(branch)和标签(tag)管理
  • @Transactional详解
  • 机器学习:Transformer
  • pytorch-模型构建,参数访问,模型存取API接口,对比学习
  • javaEE 初阶 — 数据链路层中的以太网数据帧
  • 泼辣修图Polarr5.11.4 版,让你的创意无限延伸
  • leetcode打卡-深度优先遍历和广度优先遍历
  • 【0177】Linux中POSIX信号量实现机制
  • 跳表--C++实现
  • c#:System.Text.Json 的使用一
  • kaggle数据集下载当中所遇到的问题
  • TEX:高阶用法
  • UML 类图
  • 项目实战典型案例1——redis只管存不管删除 让失效时间删除的问题
  • @RequestParam和@PathVariable的用法与区别
  • 【大数据 AI 人工智能】数据科学家必学的 9 个核心机器学习算法
  • IronPDF for .NET 2023.2.4 Crack