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

Elasticsearch实战指南:从入门到高效使用

Elasticsearch实战指南:从入门到高效使用

1. 引言:Elasticsearch是什么?

Elasticsearch是一个分布式、RESTful风格的搜索和分析引擎,广泛应用于全文搜索、日志分析、实时数据分析等场景。它的核心特点包括:

  • 高性能:支持海量数据的快速检索。
  • 分布式:易于扩展,支持高可用性。
  • 灵活:支持结构化、非结构化数据的搜索和分析。

今天,我们将从安装配置到实际应用,带你全面掌握Elasticsearch。


2. 安装与配置

2.1 安装Elasticsearch

以下是在Linux系统上安装Elasticsearch的步骤:

  1. 下载并解压:
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.2-linux-x86_64.tar.gz
    tar -xzf elasticsearch-7.15.2-linux-x86_64.tar.gz
    cd elasticsearch-7.15.2/
    
  2. 启动Elasticsearch:
    ./bin/elasticsearch
    
  3. 验证安装:
    访问http://localhost:9200,如果看到以下信息,说明安装成功:
    {"name" : "your-node-name","cluster_name" : "elasticsearch","version" : {"number" : "7.15.2"}
    }
    
2.2 安装Kibana

Kibana是Elasticsearch的可视化工具,用于数据探索和可视化。

  1. 下载并解压:
    wget https://artifacts.elastic.co/downloads/kibana/kibana-7.15.2-linux-x86_64.tar.gz
    tar -xzf kibana-7.15.2-linux-x86_64.tar.gz
    cd kibana-7.15.2-linux-x86_64/
    
  2. 启动Kibana:
    ./bin/kibana
    
  3. 访问Kibana:
    打开浏览器,访问http://localhost:5601

3. 核心概念

3.1 索引(Index)

索引是Elasticsearch中存储数据的地方,类似于数据库中的表。

3.2 文档(Document)

文档是索引中的基本数据单元,类似于表中的一行记录。

3.3 映射(Mapping)

映射定义了索引中字段的类型和属性,类似于表结构。

3.4 分片与副本
  • 分片(Shard):索引被分成多个分片,分布在不同节点上。
  • 副本(Replica):每个分片可以有多个副本,用于提高可用性和性能。

4. 基本操作

4.1 创建索引
curl -X PUT "localhost:9200/my_index" -H 'Content-Type: application/json' -d'
{"settings": {"number_of_shards": 3,"number_of_replicas": 1}
}'
4.2 添加文档
curl -X POST "localhost:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d'
{"name": "John","age": 25,"city": "New York"
}'
4.3 查询文档
curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{"query": {"match": {"city": "New York"}}
}'
4.4 删除索引
curl -X DELETE "localhost:9200/my_index"

5. 高级查询技巧

5.1 全文搜索

使用match查询进行全文搜索:

{"query": {"match": {"description": "quick brown fox"}}
}
5.2 精确匹配

使用term查询进行精确匹配:

{"query": {"term": {"status": "active"}}
}
5.3 范围查询

使用range查询进行范围过滤:

{"query": {"range": {"age": {"gte": 18,"lte": 30}}}
}
5.4 聚合查询

使用aggregations进行数据分析:

{"aggs": {"avg_age": {"avg": {"field": "age"}}}
}

6. 实战案例:日志分析

6.1 需求描述

我们需要分析Nginx日志,统计每个IP的访问次数和总流量。

6.2 数据准备

假设Nginx日志已经导入Elasticsearch,索引名为nginx_logs

6.3 查询实现
{"size": 0,"aggs": {"group_by_ip": {"terms": {"field": "client_ip.keyword"},"aggs": {"total_bytes": {"sum": {"field": "bytes_sent"}}}}}
}
6.4 查询结果
{"aggregations": {"group_by_ip": {"buckets": [{"key": "192.168.1.1","doc_count": 100,"total_bytes": {"value": 102400}},{"key": "192.168.1.2","doc_count": 80,"total_bytes": {"value": 81920}}]}}
}

7. 性能优化技巧

7.1 合理设置分片和副本
  • 分片数应根据数据量和集群规模设置,通常每个分片大小控制在10GB-50GB。
  • 副本数可以提高可用性,但会增加存储和计算开销。
7.2 使用批量操作

批量操作可以减少网络开销,提升写入性能。

curl -X POST "localhost:9200/my_index/_bulk" -H 'Content-Type: application/json' -d'
{ "index" : { "_id" : "1" } }
{ "name": "John", "age": 25 }
{ "index" : { "_id" : "2" } }
{ "name": "Alice", "age": 30 }
'
7.3 使用索引模板

索引模板可以自动为新索引应用预定义的设置和映射。

PUT _template/my_template
{"index_patterns": ["logs-*"],"settings": {"number_of_shards": 3,"number_of_replicas": 1},"mappings": {"properties": {"timestamp": { "type": "date" },"message": { "type": "text" }}}
}

8. 总结

Elasticsearch是一个功能强大的搜索和分析引擎,广泛应用于日志分析、全文搜索、实时数据分析等场景。通过掌握其核心概念、基本操作和高级查询技巧,我们可以轻松应对各种数据处理需求。

http://www.lryc.cn/news/521386.html

相关文章:

  • Open FPV VTX开源之嵌入式OSD配置
  • 2Hive表类型
  • 计算机网络之---公钥基础设施(PKI)
  • EF Core执行原生SQL语句
  • GaussDB分布式数据倾斜处理
  • 代码随想录Day34 | 62.不同路径,63.不同路径II,343.整数拆分,96.不同的二叉搜索树
  • vue.js辅助函数-mapMutations
  • Vue3组件设计模式:高可复用性组件开发实战
  • PHP 8.4 安装和升级指南
  • 什么是 OpenResty
  • Windows图形界面(GUI)-QT-C/C++ - QT控件创建管理初始化
  • 【计算机网络】lab8 DNS协议
  • 了解linux中的“of_property_read_u32()”
  • iOS - Objective-C 底层中的内存屏障
  • 阿里云服务器扩容系统盘后宝塔面板不显示扩容后的大小
  • c语言——【linux】多进程编程 【进程的创建,相关shell指令,进程状态切换,回收资源,守护进程等】
  • macos 搭建 ragflow 开发环境
  • 信创改造-龙蜥操作系统搭载MySql、Tomcat等服务
  • Java 数据结构 队列之双端队列 常用方法 示例代码 及其实现
  • 【原创】大数据治理入门(2)《提升数据质量:质量评估与改进策略》入门必看 高赞实用
  • arcgis中生成格网矢量带高度
  • 使用gtsam添加OrientedPlane3Factor平面约束因子
  • 换了城市ip属地会变吗?为什么换了城市IP属地不变
  • 移远通信多模卫星通信模组BG95-S5获得Skylo网络认证,进一步拓展全球卫星物联网市场
  • IntelliJ IDEA Type Hierarchy Scope Pattern 学习指南
  • 简聊MySQL并发事务中幻读、虚读问题的解决方案
  • 【搭建JavaEE】(2)Tomcat安装配置和第一个JavaEE程序
  • 【Qt】01-了解QT
  • websocket股票行情接口
  • 朴素贝叶斯分类器