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

Windows Elasticsearch 完整上手教程

本文从部署、概念、接口调试、Java接入、常用查询讲解ES的使用。

一、ES核心定位

1)是什么

Elasticsearch(ES):分布式全文检索引擎,基于Lucene封装,RESTful API,JSON交互;靠倒排索引实现海量数据秒级全文检索、聚合统计,典型ELK日志栈、电商搜索、埋点分析组件。

2)和MySQL对比

ES概念MySQL等价说明
Index(索引)Database库7.x废弃type,一个索引只存一类数据
Document文档Row行记录JSON格式单条数据,自带_id唯一标识
Field字段Column列单个属性
Mapping映射Table表结构定义字段类型、分词、是否索引
Shard主分片分库分表水平拆分,创建索引时数量固定不可改
Replica副本备份容灾+分担查询压力,可动态修改数量

3)两种核心字段类型

  1. text:分词、全文模糊搜索(商品标题、文章内容);
  2. keyword:不分词、精确匹配、排序、聚合(手机号、订单号、状态)。

二、Windows单机部署 ES+Kibana

版本配套规则

ES和Kibana大版本必须完全一致,示例用8.x稳定版;Windows解压即用,路径不能中文、空格

步骤1:下载解压

  1. ES压缩包:elasticsearch-8.x-windows-x86_64.zip
  2. Kibana压缩包:kibana-8.x-windows-x86_64.zip
    解压示例:
D:\soft\es8 D:\soft\kibana8

步骤2:ES配置

关闭安全、单机模式

编辑config/elasticsearch.yml,追加:

# 允许外网访问network.host:0.0.0.0http.port:9200# 单机节点,不用集群discovery.type:single-node# 关闭Xpack安全认证(开发环境)xpack.security.enabled:falsexpack.security.enrollment.enabled:falsexpack.security.http.ssl.enabled:falsexpack.security.transport.ssl.enabled:false

修改JVM内存config/jvm.options(本机开发推荐):

-Xms512m -Xmx512m

步骤3:启动ES

执行bin/elasticsearch.bat,黑窗口不要关闭;
验证:浏览器访问http://127.0.0.1:9200,返回版本JSON即成功。

步骤4:Kibana可视化控制台

写DSL必备

  1. 修改config/kibana.yml
server.host:"0.0.0.0"elasticsearch.hosts:["http://127.0.0.1:9200"]
  1. 启动:bin/kibana.bat
  2. 访问:http://127.0.0.1:5601→ 左侧Dev Tools,直接执行DSL语句。

IK中文分词器

默认英文分词,中文必须装IK,版本和ES严格一致:

# ES根目录执行bin/elasticsearch-plugininstallhttps://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.15.1/elasticsearch-analysis-ik-8.15.1.zip

重启ES生效;分词模式:

  • ik_max_word:细粒度拆分(检索用)
  • ik_smart:粗粒度拆分(存入索引用)

三、DSL全套CRUD实操

1)索引操作

#1.创建索引+Mapping(商品索引,固定字段类型)PUT/goods{"settings":{"number_of_shards":1,"number_of_replicas":0},"mappings":{"properties":{"id":{"type":"keyword"},"title":{"type":"text","analyzer":"ik_max_word"},"price":{"type":"double"},"category":{"type":"keyword"},"stock":{"type":"integer"}}}}# 查看索引结构GET/goods/_mapping # 删除索引(谨慎)DELETE/goods # 查看所有索引GET/_cat/indices?v

2)文档CRUD

# 新增文档(指定_id=1PUT/goods/_doc/1{"id":"1001","title":"华为Mate70智能手机","price":4999,"category":"手机","stock":100}# 查询单条GET/goods/_doc/1# 全量更新(覆盖整条)PUT/goods/_doc/1{"id":"1001","title":"华为Mate70 Pro","price":5499,"category":"手机","stock":88}# 局部更新(只改单个字段,推荐)POST/goods/_update/1{"doc":{"stock":80}}# 删除文档DELETE/goods/_doc/1# 批量插入多条POST/goods/_bulk{"index":{"_id":2}}{"id":"1002","title":"小米15手机","price":3999,"category":"手机","stock":200}{"index":{"_id":3}}{"id":"1003","title":"机械键盘","price":199,"category":"外设","stock":500}

3)高频检索DSL

(1)全文检索(text分词模糊匹配)
# 标题含"手机"GET/goods/_search{"query":{"match":{"title":"手机"}}}
(2)精确匹配(keyword)
GET/goods/_search{"query":{"term":{"category":{"value":"手机"}}}}
(3)范围查询+分页+排序
# 价格100~5000,价格降序,第1页每页10GET/goods/_search{"from":0,"size":10,"sort":[{"price":"desc"}],"query":{"range":{"price":{"gte":100,"lte":5000}}}}
(4)布尔组合多条件
# 必须是手机+价格小于4500,过滤不参与打分GET/goods/_search{"query":{"bool":{"must":[{"match":{"title":"手机"}}],"filter":[{"range":{"price":{"lte":4500}}}]}}}
(5)聚合统计(分类销量、均价)
GET/goods/_search{"size":0,"aggs":{"group_by_category":{"terms":{"field":"category"},"aggs":{"avg_price":{"avg":{"field":"price"}}}}}}

四、SpringBoot整合ES

Maven依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>

application.yml配置

spring:elasticsearch:uris:http://127.0.0.1:9200

方式1:Repository

简单CRUD,类似MyBatis

  1. 实体类映射ES索引
importlombok.Data;importorg.springframework.data.annotation.Id;importorg.springframework.data.elasticsearch.annotations.Document;importorg.springframework.data.elasticsearch.annotations.Field;importorg.springframework.data.elasticsearch.annotations.FieldType;@Data@Document(indexName="goods")publicclassGoodsDoc{@IdprivateStringid;@Field(type=FieldType.Text,analyzer="ik_max_word")privateStringtitle;@Field(type=FieldType.Keyword)privateStringcategory;@Field(type=FieldType.Double)privateDoubleprice;privateIntegerstock;}
  1. Mapper接口
importorg.springframework.data.elasticsearch.repository.ElasticsearchRepository;publicinterfaceGoodsEsRepoextendsElasticsearchRepository<GoodsDoc,String>{}
  1. 调用示例
@AutowiredprivateGoodsEsRepogoodsEsRepo;// 新增goodsEsRepo.save(newGoodsDoc());// 根据id查询Optional<GoodsDoc>doc=goodsEsRepo.findById("1");

方式2:ElasticsearchRestTemplate

用于复杂DSL、聚合、多条件

适合自定义复杂检索,手动拼接DSL,企业主流用法。

五、经典业务架构:MySQL同步ES两种方案

方案1:Canal监听Binlog同步

实时同步
MySQL binlog → Canal → Kafka → Java消费端写入ES,延迟毫秒级,适合订单、商品实时更新场景。

方案2:Logstash定时同步

配置JDBC输入源,定时轮询MySQL增量数据,批量写入ES,T+1离线同步。

六、高频踩坑

  1. text和keyword用反
    模糊搜索用match(text);精确查询、排序、聚合必须term(keyword),否则查不出数据。
  2. 深分页 from+size>10000
    ES默认禁止,大数据分页改用search_after游标分页。
  3. 不要用%关键词%通配符查询
    全表扫描CPU打满,ES天然分词检索,改用match即可。
  4. Mapping动态自动推断字段
    线上关闭dynamic:true,防止随意新增字段导致索引膨胀、查询变慢。
  5. 分片数量一经创建不能修改
    单机开发主分片设1,集群部署按节点规划,只能重建索引修改。
http://www.gsyq.cn/news/1527104.html

相关文章:

  • OpenCore Legacy Patcher技术方案:突破苹果官方限制,让老旧Mac重获新生的实践路径
  • 2026年新发布:如何联系专业高效的上海工程款清收律师团队 - 品牌鉴赏官2026
  • 如何快速安装Realtek 8192FU无线网卡驱动:Linux系统完整指南
  • Kamailio 深度技术解析:构建电信级 SIP 信令核心
  • 2026乐山律师事务所选择指南:靠谱律所怎么找?多主体实力解析与收费参考 - 优质品牌商家
  • 2026年膜结构体育看台选购指南:6家主流企业深度分析与实景案例参考 - 优质品牌商家
  • 2026崂山区空调移机联系电话及服务选择参考 - 品牌排行榜
  • 电脑防泄密软件哪家好?6款超实用的电脑防泄密软件推荐,功能详解
  • 从面试官视角拆解K8s:那些藏在Deployment、Service和Ingress背后的真实生产考量
  • 避坑指南:给IEEE TII/TITS/IoTJ投稿前,你必须知道的5个潜规则与应对策略
  • 2026北京薪酬设计|薪酬体系|薪酬改革|薪酬绩效|薪酬激励咨询公司专项评测:从体系搭建到国企改革的实战标杆 - 互联网科技品牌测评
  • 2026年南京婚姻情感心理咨询机构选择指南 - 品牌排行榜
  • 2026东莞镀金料回收商家实力排行:工业废料回收梯队实测与合规服务商盘点 - 互联网科技品牌测评
  • 一家房屋维修业务技能精干、负有企业社会责任感的防水公司 - 资讯速览
  • JAVA语言程序开发第15课(难度升级)
  • 从面试官视角拆解JMeter性能测试:那些高频面试题背后的实战逻辑与避坑指南
  • Ollama 量化策略对比:从 Q4_0 到 Q8_0 的精度损失与推理性能权衡
  • 2026年现阶段南京deepseek优化推广网络公司推荐哪家?聚焦合规落地与长效获客的GEO专家 - 品牌鉴赏官2026
  • 第五周学习笔记
  • 电脑硬件八大核心硬件指南介绍
  • 别死磕公式!给模电初学者的冯军版《电子线路》1-6章高效学习法(避坑半导体物理)
  • 2026年佛山免熏蒸出口木箱定制市场观察:厂商能力、案例与选型参考 - 优质品牌商家
  • 2026 佛山管道疏通与异味治理机构精选 5 家 马桶 / 厨卫下水 / 地漏除臭服务参考 - 宅安选房屋修缮
  • 了解结构体
  • SH9高阶曲率修正下的测地线动力学与极端认知场景定量解(世毫九实验室原创研究)
  • 如何永久保存微信聊天记录:WeChatMsg免费开源工具完全指南
  • 市面上正规的AI智能体APP
  • 杭州企业GEO合作必读:2026 年 6 月 TOP5 靠谱公司推荐 + 行业常见问题一站式解答 - 936品牌测评网
  • 电脑效率翻倍:新手必学的实用操作指南
  • Java作业