Elasticsearch 是一个分布式搜索和分析引擎,广泛应用于各种场景,如全文搜索、日志与事件数据分析、实时数据流处理等。本文将详细介绍如何在实际项目中使用 Elasticsearch,包括安装配置、基本操作、高级查询及优化策略。
1. 安装和配置
安装 Elasticsearch
通过官方包管理器安装
-
Debian/Ubuntu:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - sudo apt-get install apt-transport-https echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list sudo apt-get update && sudo apt-get install elasticsearch
-
CentOS/RHEL:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF sudo yum install elasticsearch
配置 Elasticsearch
打开配置文件 elasticsearch.yml
进行基本配置:
# 网络设置
network.host: 0.0.0.0
http.port: 9200
# 集群名称
cluster.name: my-cluster
# 节点名称
node.name: node-1
# 数据和日志路径
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
启动 Elasticsearch 服务:
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
2. 基本操作
创建索引
创建一个名为 my_index
的索引:
curl -X PUT "localhost:9200/my_index?pretty"
插入文档
向索引中插入一条文档:
curl -X POST "localhost:9200/my_index/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
"title": "Elasticsearch实战指南",
"author": "John Doe",
"content": "这是一本关于Elasticsearch的实战指南。",
"tags": ["Elasticsearch", "实战指南"],
"published_date": "2023-10-20"
}
'
获取文档
获取插入的文档:
curl -X GET "localhost:9200/my_index/_doc/1?pretty"
更新文档
更新文档内容:
curl -X POST "localhost:9200/my_index/_update/1?pretty" -H 'Content-Type: application/json' -d'
{
"doc": {
"author": "Jane Doe"
}
}
'
删除文档
删除文档:
curl -X DELETE "localhost:9200/my_index/_doc/1?pretty"
3. 高级查询
基本查询
匹配查询
curl -X GET "localhost:9200/my_index/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"match": {
"content": "指南"
}
}
}
'
复合查询
curl -X GET "localhost:9200/my_index/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"bool": {
"must": [
{ "match": { "content": "指南" }},
{ "match": { "author": "Jane Doe" }}
],
"filter": [
{ "term": { "tags": "Elasticsearch" }}
]
}
}
}
'
聚合查询
统计文档数量
curl -X GET "localhost:9200/my_index/_count?pretty"
分组聚合
curl -X GET "localhost:9200/my_index/_search?pretty" -H 'Content-Type: application/json' -d'
{
"aggs": {
"tags_count": {
"terms": {
"field": "tags.keyword"
}
}
}
}
'
分页查询
curl -X GET "localhost:9200/my_index/_search?pretty" -H 'Content-Type: application/json' -d'
{
"from": 0,
"size": 10,
"query": {
"match_all": {}
}
}
'
4. 性能优化
索引优化
-
合理的索引分片和副本设置
index.number_of_shards: 3 index.number_of_replicas: 1
-
使用合适的映射类型
curl -X PUT "localhost:9200/my_index?pretty" -H 'Content-Type: application/json' -d' { "mappings": { "properties": { "title": { "type": "text" }, "author": { "type": "keyword" }, "content": { "type": "text" }, "tags": { "type": "keyword" }, "published_date": { "type": "date" } } } } '
查询优化
-
使用过滤和缓存
在查询中使用 filter 而非 query 来提高性能,因为过滤条件可以被缓存。
curl -X GET "localhost:9200/my_index/_search?pretty" -H 'Content-Type: application/json' -d' { "query": { "bool": { "must": { "match": { "content": "指南" } }, "filter": { "term": { "tags": "Elasticsearch" } } } } } '
-
避免大量的深度分页
深度分页会降低性能,尽量避免使用过大的 from 和 size 参数,使用 search_after 或 scroll API 进行大数据量查询。
curl -X GET "localhost:9200/my_index/_search?pretty" -H 'Content-Type: application/json' -d' { "size": 1000, "query": { "match_all": {} } } '
监控和维护
- 使用Kibana监控Elasticsearch集群
Kibana是Elasticsearch的可视化工具,能够实时监控集群状态、性能指标及日志。
- 定期进行索引模板和映射管理
制定索引模板和映射规范,确保新创建的索引符合性能最佳实践。
结语
通过本文,我们详细介绍了 Elasticsearch 的安装配置、基本操作、高级查询以及优化策略。在实际项目中,Elasticsearch 是一个强大的工具,能够处理海量数据,并提供高效的搜索和分析功能。希望这篇文章能帮助你更好地理解和使用 Elasticsearch,解决实际应用中的问题。
无论是日志分析、全文搜索还是实时数据处理,Elasticsearch 都可以为你提供强大的支持。掌握其使用和优化技巧,将助你在数据驱动的世界中游刃有余。
标签:实战,index,9200,详解,Elasticsearch,pretty,my,localhost From: https://blog.csdn.net/sorrty00/article/details/142527102