ES常用API总结

ES常用api介绍 如何查看集群的当前状态 curl -sXGET ‘http://localhost:9200/_cluster/health?pretty’ 或者 sh index.sh health cluster_name:集群名称 status: 集群状态,green代表所有打开的索引的全部分片全部是正常状态,yellow表示部分分片的副本不活跃,red表示部分索引的主副分片全不活跃。 number_... 阅读详情


​
本文内容部分使用AI生成技术

目的

本文总结了关于ES从安装到一些常见的关于ES的API使用示例,方便可以后面快速查询使用。

一、下载安装ES

1.下载:
下载地址 7.10.2
2.安装
下载完成后解压,并执行以下命令启动:

# 执行解压后目录下的 /bin/elasticsearch 命令启动
> cd /Users/mac/dev/elasticsearch/elasticsearch-7.10.2
> ./bin/elasticsearch 

3.登录
浏览器输入:https://localhost:9200/
账号:elastic
密码:复制日志中打印的密码:

Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
  lvxxxxxxxxxx

4.安装 Chrome ElasticVue 扩展程序(可选)
5.解决SSL报错(可选)
关闭后不用使用https访问

vim config/elasticsearch.yml
修改:
# 关闭安全功能
xpack.security.enabled: false
# 关闭 HTTP 层的 SSL
xpack.security.http.ssl.enabled: false

6.安装ik分词器插件

bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.10.2

二、ES使用

主要分为两大类别:
1.对索引(相当于数据库的DDL)的操作
2.对文档(相当于数据库的DML)的操作

1、ES索引

创建索引

PUT /product/_mapping
{
  "mappings": {
    "properties": {
      "product_name": { 
        "type": "text",  // 【规则】Text类型:用于全文搜索。存入“华为Mate60 Pro”会被分词为【华为、Mate60、Pro】。
        "analyzer": "ik_max_word",  // 使用IK中文分词
        "fields": {     // 多字段特性:一个字段以两种方式索引。
          "keyword": { 
            "type": "keyword"  // 【规则】Keyword类型:用于精确匹配、聚合、排序。存入的是完整的“华为Mate60 Pro”字符串。
          }
        }
      },
      "brand": { 
        "type": "keyword" // 品牌名通常用于精确过滤(如`品牌=小米`)或聚合统计,故用keyword。
      },
      "price": { "type": "float" },
      "title": {
          "type": "text",
          "analyzer": "ik_max_word",  // 使用IK中文分词
          "search_analyzer": "ik_smart"
      },
      "create_time": {
          "type": "date",
          "format": "yyyy-MM-dd HH:mm:ss"
      },
      "tags": { "type": "keyword" }  // 标签也适合精确匹配和聚合。精确值,用于过滤、聚合
    }
  },
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  }
}

2、ES文档

添加文档

// 1. 创建单个文档 (指定ID)
PUT /product/_doc/1
{ "product_name": "华为Mate60 Pro", "brand": "华为", "price": 6999, "tags": ["手机", "旗舰", "新品"] ,
"title": "小米手机", "create_time": "2023-10-01 12:00:00"}

// 2. 批量操作(高效增删改)
POST /_bulk
{"index":{"_index":"product","_id":"2"}}
{"product_name":"iPhone 15","brand":"苹果","price":5999,"tags":["手机","iOS"],"title":"苹果手机","create_time":"2024-10-01 12:00:00"}
{"index":{"_index":"product","_id":"3"}}
{"product_name":"小米13 Ultra","brand":"小米","price":6499,"tags":["手机","相机","旗舰"],"title":"小米13 Ultra 徕卡影像旗舰","create_time":"2025-10-01 12:00:00"}

查询文档(重点)

规则对应查询类型应用场景与示例
bool: 组合多个查询条件bool组合 必须满足(must)、应该满足(should)、必须不满足(must_not)和过滤(filter) 条件。
must: 必须满足,参与算分嵌套在 bool 内影响结果相关度排序的核心条件。
filter: 必须满足,不参与算分嵌套在 bool 内用于结构化数据过滤(范围、状态),不关心相关性,性能更优。
should: 应该满足(或逻辑)嵌套在 bool 内实现“或”逻辑,常与 minimum_should_match 配合。
must_not: 必须不满足嵌套在 bool 内排除不需要的数据。
match: 对查询词分词,模糊匹配match, multi_match在商品名称、描述中进行关键词搜索。
term: 不对查询词分词,精确匹配term, terms对keyword字段进行精确筛选,如品牌、状态码、标签。

!!! 查询嵌套优先级:
query → [ bool → must/must not/filter/should → ] term/terms/match
“[ ]”中的关键词为可选
其中:
must/must not/filter/should: 决定了是否对【文档】进行分词以及是否计算得分
term/terms/match: 控制查询【关键词】是否进行分词处理

简单查询
# 基础匹配查询
POST /product/_search
{
  "query": {
    "match": {
      "title": "小米手机"
    }
  },
  "from": 0,
  "size": 10
}

# 多字段搜索
POST /product/_search
{
  "query": {
    "multi_match": {
      "query": "小米",
      "fields": ["title", "brand^2"]  // brand字段权重加倍
    }
  }
}

复杂查询

# 精确过滤与范围查询
POST /product/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "手机" } }
      ],
      "filter": [
        { "term": { "brand": "小米" } },
        { "range": { "price": { "gte": 3000, "lte": 5000 } } },
        { "exists": { "field": "tags" } }
      ]
    }
  }
}

# 复杂布尔组合
POST /product/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "手机" } }
      ],
      "should": [
        { "term": { "tags": "新品" } },
        { "range": { "price": { "lte": 4000 } } }
      ],
      "minimum_should_match": 1,
      "must_not": [
        { "term": { "brand": "苹果" } }
      ]
    }
  }
}

# 指标与分组聚合
POST /product/_search
{
  "size": 10,
  "aggs": {
    "price_stats": {
      "stats": { "field": "price" }  // 统计: 计数、总和、平均、最小、最大
    },
    "group_by_brand": {
      "terms": { "field": "brand" },  // 按品牌分组
      "aggs": {
        "avg_price": { "avg": { "field": "price" } }  // 每个品牌的平均价格
      }
    },
    "price_histogram": {
      "histogram": {
        "field": "price",
        "interval": 1000,
        "extended_bounds": { "min": 0, "max": 10000 }
      }
    }
  }
}

# 时间范围统计
POST /product/_search
{
  "size": 10,
  "aggs": {
    "sales_over_time": {
      "date_histogram": {
        "field": "create_time",
        "calendar_interval": "month",
        "format": "yyyy-MM"
      },
      "aggs": {
        "total_sales": { "sum": { "field": "price" } }
      }
    }
  }
}

# 全文检索(高亮显示)
POST /product/_search
{
  "query": {
    "match": { "title": "智能手机" }
  },
  "highlight": {
    "fields": {
      "title": {
        "pre_tags": ["<em>"],
        "post_tags": ["</em>"]
      }
    }
  }
}
整体示例
POST /product/_search
{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "小米手机",
            "fields": [
              "title^2",
              "brand^1.5"
            ],
            "type": "best_fields"
          }
        }
      ],
      "should": [
        {
          "term": {
            "tags": "旗舰"
          }
        },
        {
          "range": {
            "price": {
              "lte": 4000
            }
          }
        }
      ],
      "minimum_should_match": 1,
      "filter": [
        {
          "term": {
            "brand": "小米"
          }
        },
        {
          "range": {
            "price": {
              "gte": 2000,
              "lte": 8000
            }
          }
        },
        {
          "exists": {
            "field": "tags"
          }
        }
      ],
      "must_not": [
        {
          "term": {
            "brand": "苹果"
          }
        }
      ]
    }
  },
  "highlight": {
    "fields": {
      "title": {
        "pre_tags": [
          "<em>"
        ],
        "post_tags": [
          "</em>"
        ]
      },
      "brand": {}
    }
  },
  "aggs": {
    "price_stats": {
      "stats": {
        "field": "price"
      }
    },
    "group_by_brand": {
      "terms": {
        "field": "brand",
        "size": 10
      },
      "aggs": {
        "avg_price": {
          "avg": {
            "field": "price"
          }
        },
        "brand_price_stats": {
          "stats": {
            "field": "price"
          }
        }
      }
    },
    "price_histogram": {
      "histogram": {
        "field": "price",
        "interval": 1000,
        "extended_bounds": {
          "min": 0,
          "max": 10000
        }
      }
    },
    "sales_over_time": {
      "date_histogram": {
        "field": "create_time",
        "calendar_interval": "month",
        "format": "yyyy-MM-dd",
        "min_doc_count": 0,
        "extended_bounds": {
          "min": "2024-01-01",
          "max": "2025-12-31"
        }
      },
      "aggs": {
        "monthly_revenue": {
          "sum": {
            "field": "price"
          }
        }
      }
    }
  }
}

参考文档:
https://www.elastic.co/docs/reference/elasticsearch/rest-apis#documenthttpswww.elastic.codocsapidocelasticsearchv9groupendpoint-document

ElasticSearch的常用详细API 采用TransportClient这种方式,官方已经明确表示在ES 7.0版本中将弃用TransportClient客户端,且在8.0版本中完全移除它. TransportClient的常用操作(给自己以后做参考) 导入依赖(对应es版本,查看其它版本到https://mvnrepository.com/maven的仓库中查询) <!--https://mvnrepository... 阅读详情

相关推荐

ES 6 常用API

文章目录1. Cluster API1.1 查看集群健康1.2 查看索引2. Document API2.1 增2.1.1 单个文档2.1.2 批量2.2 删2.2.1 单个删除2.2.2 批量删除 delelte_by_query2.3 改2.3.1 单个修改2.3.2 批量修改 update_by_query2.3 查2.3.1 获取单个文档2.3.2 批量获取 mget2.4 批量操作Bulk3. 检索3.1 检索和过滤3.2 结构化检索3.2.1 精确匹配检索 term terms3.2.2 范围查

萝卜头柯克船长的博客 608

ES基础篇 常用API之文档API

前面写了一篇常用API之索引类、映射类、别名类API,主要是介绍Elasticsearch的集群类、索引类、映射类、别名类等,这些在开发中或许不会经常用到,但API的存在定有它存在的价值,作为程序猿的我们,或使用Java,或使用Python等等,虽然使用编程语言调用接口,但有时候,需要便捷的操作、查看相关信息的时候,明显在Kinbana上操作API会更加便捷,这或许就是它所存在的意义,所以这次在追加一篇文档API,供大家开发的时候参考。

u010088278的博客 3532

Android OpenGL ES学习笔记之常用API

上一篇文章Android OpenGL ES学习笔记之绘制点涉及到了一些API,在这篇文章配合一些实例给大家详细的讲解下。 缓冲区 在OpenGL ES 中存在着三种缓冲区 - 颜色缓冲区 ————包含了颜色索引或者RGBA颜色数据 - 深度缓冲区 ————存储每个像素的深度值,当启动深度测试时,片段像素深度值和深度缓冲区深度值进行比较,决定片段哪些像素点数据可以替换到颜色缓冲区中

Dennis-Android的博客 2973

ES常用API

目录 查看ES集群的健康状况 查看ES的设置 动态设置参数 查看ES在线的节点 查看ES的主节点 查看所有索引 查看具体某个索引 查看yellow的索引 查看red的索引 查看yellow索引的恢复情况 关闭所有yellow索引 查询索引的分片情况 查询指定索引的分片情况 查看不能分配的分片 查看所有分片的恢复情况 查看某个具体索引的分片恢复情况 查看segments内存占用情况 查看线程池 查看ES集群线程池状态 查看segment数量 查看节点情况 打开指定索引 关闭指定索引 设置total_sh.

localhost65535的博客 8265

【Elasticsearch】elasticsearch 常用 API 介绍

这里是积累各种API检索所有的_all字段q = pony包含运算符和包含boost精确检索的复杂检索使用通配符和特殊查询进行检索模糊搜素和范围检索。

九师兄 2536

OpenGL ES常用API

OpenGL ES常用APIOpenGL ES常用APIOpenGL ES常用API

认识ElasticSearch的API,并深入Search的使用

0.引言 本文罗列介绍了ES提供的公共API,重点围绕数据检索主题相关API进行说明总结。 1.概述 Elasticsearch提供全功能的RESTful API。以基于HTTP协议传输交换JSON数据的方式,向用户提供访问服务。 具体的访问方式可按照参数的提交方法区分为以下两种: 通过UR...

chuiku1691的博客 2919

Android 13 录音APK在后台无数据的处理

未获取到录音数据

chenchen4310的博客 1182

ES的基本API操作

ElasticSearch ES在使用时,会涉及到五个核心概念:索引(Index)、映射(Mapping)、域(Field)、文档(Document)、倒排索引。 一、索引 1.1 添加索引 (PUT 索引名称) PUT person PUT person1 1.2 查询单个索引 GET person 1.3 查询多个索引 GET person,person1 1.4 查询所有索引 GET _all 1.5删除索引 DELETE person1 二、域 域(Field)相当于数据表中的字段列,当

多喝清晨的粥 3384

别再只会插拔了!深入Linux内核,手把手调试USB热插拔中断(以高通平台为例)

本文深入探讨了Linux内核中USB热插拔中断的调试方法,特别针对高通平台提供了详细的实战指南。从硬件基础到内核机制,再到中断调试工具和常见问题排查,帮助开发者系统性地解决USB设备识别问题。通过监控中断状态、分析处理流程和高级调试技巧,提升USB热插拔的稳定性和性能。

weixin_29161785的博客 428

工业预测模型避坑指南:PHM2012轴承数据实战中,LSTM、CNN、Transformer到底怎么选?

本文深入探讨了工业预测模型在PHM2012轴承数据下的选型策略,对比了LSTM、CNN和Transformer等主流模型在轴承寿命预测任务中的表现。通过真实实验数据,提供了可复现的选型决策框架,帮助工程师根据数据规模、硬件条件和精度要求选择最佳模型。文章还揭示了工程落地中的隐藏陷阱,如数据不均衡和工况迁移挑战,并提出了解决方案。

weixin_33694172的博客 493

[es]elasticSearch常用的api

查看es的全部索引 curl -XGET 'localhost:9200/_cat/indices?v&pretty' 查看es的健康状态 curl localhost:9200/_cat/health?v

Mrerlou的博客 490

一步一步实现基于COMSOL的单模光纤波导仿真

一步一步实现基于COMSOL的单模光纤波导仿真,简单易懂,跟着博客就能实现

君莫笑lucky的博客 1万+

总结ES6到ES10常用API

es6到es10常用api

Snlyxiaoguais的博客 715

three.js中如何高效加载并播放GLB格式的3D动画

本文详细介绍了在three.js中高效加载并播放GLB格式3D动画的最佳实践。通过对比GLB与GLTF格式的优势,提供从环境搭建、模型加载到动画控制的完整解决方案,并分享性能优化技巧和常见问题排查方法,帮助开发者提升3D动画项目的开发效率和用户体验。

weixin_27890975的博客 362

Vue2 - 最新详细实现网站内部打开预览 office 全套附件,在页面弹窗内解析预览 word文档、excel电子表格、ppt演示文稿(docx|xlsx|pptx|pdf|txt等文件)详细代码

vue2,nuxt2,office,文档,文件,查看预览,弹框预览,下载预览,如何预览pdf文档,打开查看,office全套文档,实现在线预览文件,小程序内预览word文件,手机h5移动端网页,nuxt文档在线预览,预览office最好用的插件,下载查看,Office在线预览,vue-office,vue如何使用vue-office教程示例,word文档,ppt,exce表格,预览电子文件,文档无法解析,打不开,报错,失效,保存下载,vue前端预览并下载doc、xls、pdf、txt及图片,vue2中预览p

🏆 前端领域优质创作者 1万+

Elasticsearch——详解ES特点,基本概念以及ES常用api操作

详解ES的基础概念,包括集群,节点,文档,类型,索引等等。介绍es的查询语句,搜索语句,全文搜索语句,高亮搜索结果以及聚合能力

zekser的博客 1529

uniapp - 超详细实现播放 svg / svga 格式动画组件插件,用于直播间赠送礼物特效动画或项目动画特效较多的应用(新手小白保姆级教程,提供插件+详细运行示例+使用文档+注意事项+格式说明)

uniappsvga,uniapp播放svga动画,uniapp中使用svga动画详细教程,uniapp播放svga的插件,uniapp有没有调用svga格式动画的组件插件,uinappH5App小程序全端兼容的svga播放器免费好用插件,uniapp好用的svga格式动画插件,在uniapp中使用SVGAPlayer播放svga动画,uniapp中使用svga动画,编译到apph5,uniapp运行svg动画,uniapp怎么使用svga文件格式,uniapp播放svg格式的动画教程,un

🏆 前端领域优质创作者 1万+

Elasticsearch 常用的 API 接口

更新文档,对现有文档进行更新操作,如对某个字段的值进行修改。:根据查询条件删除文档,如删除所有包含特定关键词的文档。,列出集群中所有索引及其基本信息,如文档数量、存储大小等。:一次批量获取文档,可在一次请求中获取多个文档的信息。:根据查询条件更新文档,对符合条件的文档进行批量更新。,获取各节点的统计信息,如 CPU 使用率、内存使用等。:删除文档,根据索引、类型和 ID 删除指定文档,如。:获取文档,通过索引、类型和 ID 获取文档。,获取集群的统计信息,如文档数量、存储大小等。

坚持写博客,大家的关注是我前进的动力! 1229

【从零开始入门unity游戏开发之——C#篇01】理论开篇,理解什么是编程

理论开篇,理解什么是编程

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3112

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Prometheus(八):Prometheus监控elasticsearch及常用API

Elasticsearch Exporter主要是用来获取 Elasticsearch的指标数据,是使用Go语言写的,端口号为:9114。

dl_11的博客 2614

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

es常用API

elasticsearch version: 6.7.* kibana version: 6.7.* 注意:es版本和kibana的版本要对应,否则可能会 出现各种意外情况 基本概念 Elasticsearch的文件存储是面向文档型数据库(有点类似 mongodb) 一条数据在这里就是一个文档,用JSON作为文档序列化的格式,比如下面这条用户数据: {...

qq_38358436的博客 700

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

js es5和es6有哪些常用的api

ES5 和 ES6 分别代表了 JavaScript 发展的两个重要阶段。ES5 主要增加了对数组和对象操作的支持,而 ES6 引入了更多的语言特性,如类、模块、箭头函数等,极大地提升了 JavaScript 的开发体验。了解这些 API 的使用方法,可以帮助开发者更高效地进行 Web 开发。

ivan5277的博客 791

Elasticsearch基础篇(八):常用查询以及使用Java Api Client进行检索

该指南详细介绍了用户检索需求和测试环境搭建。从建立 Elasticsearch 字段、索引和映射,到执行查询操作,覆盖了主键查询、全量查询、分页查询、排序查询、全文检索等多种操作。最后,指南展示了如何在 Spring 项目中集成 Elasticsearch,包括创建项目、引入依赖、配置客户端类,并使用 Java API Client 进行索引创建、文档保存和检索。这一全面指南旨在协助读者更深入理解 Elasticsearch,并在 Spring 项目中高效应用查询和索引功能。

后端开发 3018

ElasticSearch的常用API

ElasticSearch的常用API 1、在服务器上怎么查ES的信息 # 通过使用_cat可以查看支持的命令 ### curl localhost:9200/_cat eg: /_cat/allocation /_cat/shards /_cat/shards/{index} /_cat/master /_cat/nodes /_cat/tasks /_cat/indices /_cat/i...

KingAarmy的博客 1099

Elasticsearch常用的API

Elasticsearch常用的API 1. Index相关API # 查看索引相关信息 GET 索引名称 # 查看索引的文档总数 GET 索引名称/_count # 查看前10条文档,了解文档格式 POST 索引名称/_search # 查看索引 GET /_cat/indices/kibana*?v&s=index # 查看状态为绿色的索引 GET /_cat/indices?v&health=green # 按照文档个数排序索引 GET /_cat/indices?v&s=do

大数据进阶之路 541
上一篇: Windows10新机安装整理
ProgrammingWay
博客等级 码龄9年 58粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值