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

Elasticsearch的用法

Elasticsearch 是一款功能强大的分布式搜索与分析引擎,广泛应用于全文检索、日志分析、实时监控等场景。以下是其核心用法及操作指南:


一、基础概念与安装配置

  1. 1.

    核心概念

    • 索引(Index):类似数据库中的表,存储结构化或非结构化数据,支持分片(Shard)和副本(Replica)机制以提高扩展性和容灾性。

    • 网页(Document):以 JSON 格式存储的单条数据记录,通过唯一 ID 标识。

    • 映射(Mapping):定义字段类型(如 textkeyworddate)及分词规则,优化搜索性能。

  2. 2.

    安装与启动

    • 下载并解压 Elasticsearch,修改配置文件 elasticsearch.yml(如集群名称、节点名称)。

    • 通过命令行启动服务:./bin/elasticsearch,默认端口为 9200


二、网页操作

  1. 1.

    新增网页

    • 指定 ID 插入:

      POST /my_index/_doc/1
      {"title": "Elasticsearch 教程","content": "基于 Lucene 的搜索服务器..."
      }
    • 自动生成 ID:

      POST /my_index/_doc
      {"title": "另一篇教程"
      }
  2. 2.

    查询网页

    • 按 ID 查询:

      GET /my_index/_doc/1
    • 条件查询(如范围、模糊匹配):

      GET /my_index/_search
      {"query": {"range": {"price": {"gte": 100, "lte": 500}},"wildcard": {"title": "*Elastic*"}}
      }
  3. 3.

    更新与删除

    • 更新部分字段:

      POST /my_index/_update/1
      {"doc": {"title": "更新后的标题"}
      }
    • 批量操作:

      POST /my_index/_bulk
      {"index": {}} {"title": "网页1"} {"index": {}} {"title": "网页2"}

三、搜索与查询

  1. 1.

    全文检索

    • 使用 match查询分词后的文本内容:

      GET /my_index/_search
      {"query": {"match": {"content": "Elasticsearch 教程"}}
      }
    • 精确匹配使用 term查询(适用于 keyword类型字段):

      {"term": {"status": "active"}}
  2. 2.

    复杂查询

    • 布尔组合查询(mustshouldmust_not):

      {"bool": {"must": [{"match": {"title": "Elasticsearch"}}, {"range": {"date": {"gte": "2025-01-01"}}}]}}
    • 多字段查询(multi_match):

      {"multi_match": {"query": "搜索词", "fields": ["title", "content"]}}
  3. 3.

    高亮与排序

    • 高亮匹配关键词:

      {"highlight": {"fields": {"content": {}}}}
    • 按字段排序:

      {"sort": [{"price": {"order": "desc"}}]}

四、聚合分析

  1. 1.

    桶聚合(Bucket Aggregations)

    • 按字段值分组(如统计不同年龄的用户数):

      {"aggs": {"ages": {"terms": {"field": "age"}}}}
  2. 2.

    度量聚合(Metric Aggregations)

    • 计算平均值、总和等:

      {"aggs": {"avg_price": {"avg": {"field": "price"}}}}
  3. 3.

    嵌套聚合

    • 在桶聚合内嵌套度量聚合(如每个性别下的平均收入):

      {"aggs": {"genders": {"terms": {"field": "gender"}}, "avg_income": {"avg": {"field": "income"}}}}

五、索引管理与优化

  1. 1.

    映射优化

    • 动态映射与静态映射结合,避免字段类型错误:

      PUT /my_index
      {"mappings": {"properties": {"price": {"type": "double"}}}
      }
  2. 2.

    分片与副本调整

    • 创建索引时指定分片数和副本数:

      {"settings": {"number_of_shards": 3, "number_of_replicas": 1}}
  3. 3.

    索引迁移与重建

    • 使用 _reindexAPI 迁移数据:

      POST /_reindex
      {"source": {"index": "old_index"}, "dest": {"index": "new_index"}}

六、集群管理与监控

  1. 1.

    集群健康检查

    • 查看集群状态:

      GET /_cluster/health?pretty
  2. 2.

    节点与分片监控

    • 通过 GET _cat/shards?v查看分片分布,优化资源分配。

  3. 3.

    安全配置

    • 启用身份验证(如 X-Pack)及 HTTPS 加密。


七、进阶技巧

  • 分词器配置:使用 IK 分词器处理中文文本,支持自定义词典和停用词。

  • 别名操作:动态切换索引别名以实现无缝索引更新:

    POST /_aliases {"actions": [{"remove": {"index": "old", "alias": "alias"}}, {"add": {"index": "new", "alias": "alias"}}]}
  • 脚本更新:通过 Painless 脚本批量修改字段值。


以上为 Elasticsearch 的核心用法,实际应用中需结合具体场景调整索引策略、查询逻辑及性能优化方案。更多细节可参考官方网页或搜索结果中的实战案例。

http://www.dtcms.com/a/596305.html

相关文章:

  • LLMChain for Chat Models in LangChain
  • 【JAVA进阶】SpringBoot启动流程深度解析:从main方法到应用就绪的完整旅程
  • 昆明建设厅培训网站创意设计文案
  • 如何为虚拟机配置多渠道、可聚合、更智能的告警通知机制?
  • 分布式容器镜像自动同步系统 设计方案
  • 智联无界,术教相融:分布式医疗示教系统重构医疗教学新生态
  • 【深度学习新浪潮】三维数字孪生核心算法深度解析
  • Clustering vs Classification|聚类vs分类
  • Java-小林coding八股文(1)
  • Selenium详细教程
  • 门户网站开发介绍上海华谊集团建设有限公司网站
  • 8. Linux-riscv内存管理35-40问
  • Vue3响应式系统中,对象新增属性、数组改索引、原始值代理的问题如何解决?
  • HTTP接口和Dubbo接口区别
  • K8S中ETCD高可用机制详解
  • jmeter发送数据到sasl加密的kafka
  • 【MATLAB代码】二维平面的TOA定位,GDOP(几何精度因子)和CRLB(克拉美罗下界)计算与输出
  • 【Hadoop】Hadoop核心基础——YARN 框架架构与运行机制(Hadoop 集群的 “资源管家”)
  • MI50运算卡使用llama.cpp的ROCm后端运行gpt-oss-20b的速度测试
  • 聊聊关于hive“中文乱码”问题
  • 一般建设网站需要多少预算酷站 网站
  • ASP.NET 实战:用 CSS 选择器打造一个可搜索、响应式的书籍管理系统
  • 消息队列防止数据丢失问题
  • Spring Cloud Bus 事件广播机制
  • 广州巨腾建网站公司郑州网站app开发
  • 银河麒麟服务器安装图形化界面
  • 【源码+文档+调试讲解】基于Spring Boot的考务管理系统设计与实现 085
  • LeetCode 421 - 数组中两个数的最大异或值
  • 【笔记】xFormers版本与PyTorch、CUDA对应关系及正确安装方法详解
  • 【GitHub每日速递 20251111】PyTorch:GPU加速、动态网络,深度学习平台的不二之选!