Elasticsearch相关知识@1

devtools/2024/12/29 8:05:27/

目录标题

  • Lucene
      • 1. **什么是 Lucene?**
      • 2. **Lucene 在 Elasticsearch 中的作用**
      • 3. **Lucene 的核心功能**
        • (1) **倒排索引**
        • (2) **分词**
        • (3) **查询解析**
        • (4) **相关性评分**
      • 4. **为什么 Elasticsearch 使用 Lucene?**
      • 5. **Lucene 和 Elasticsearch 的区别**
      • 6. **总结**
  • 分片
      • 列的解释:
    • 扩容分片
      • 1. **创建新的索引并重新索引**
      • 2. **使用索引别名(Index Alias)**
      • 3. **调整副本数(Replica Shards)**
      • 4. **使用跨集群复制(CCR)**
      • 总结:
    • 扩容副本
  • esrally
    • 安装
      • 数据库介绍
    • 结果解释
  • 备份

Lucene

在 Elasticsearch(ES)中,Lucene 是其核心的底层搜索引擎库。它为 Elasticsearch 提供了全文搜索和索引的核心功能。以下是关于 Lucene 的详细介绍:


1. 什么是 Lucene?

Lucene 是一个开源的全文搜索库,由 Apache 软件基金会维护。最初由 Doug Cutting 创建,用于为 Java 应用程序提供高效的文本搜索和索引功能。

  • 它本身并不是一个独立的搜索引擎
  • 它是一个用于构建搜索功能的基础库,支持高度可定制的索引和查询功能。

2. Lucene 在 Elasticsearch 中的作用

Elasticsearch 是一个分布式搜索引擎,基于 Lucene 构建。它将 Lucene 的强大功能封装起来,提供了简单易用的 RESTful API 和分布式架构支持。

  • 索引数据:Elasticsearch 使用 Lucene 的倒排索引来组织和存储数据,使全文检索变得高效。
  • 执行查询:查询解析和执行是由 Lucene 的查询功能完成的,包括布尔查询、范围查询、分词等。
  • 评分机制:Lucene 提供的 TF-IDFBM25 算法计算文档与查询的相关性。

3. Lucene 的核心功能

(1) 倒排索引

Lucene 使用倒排索引存储数据,这是一种专门为快速文本搜索设计的数据结构。

  • 示例
    如果有两篇文档:
    Doc1: "Lucene is a search library"
    Doc2: "Elasticsearch uses Lucene"
    
    倒排索引会存储类似以下信息:
    Term       -> DocID
    "Lucene"   -> Doc1, Doc2
    "search"   -> Doc1
    "library"  -> Doc1
    "uses"     -> Doc2
    
(2) 分词

Lucene 通过 分析器(Analyzer) 将输入的文本拆分成更小的单元(称为词元),然后将其索引。

  • 示例:输入文本 "Lucene is powerful!",可能会被分词为 ["lucene", "powerful"]
(3) 查询解析

Lucene 支持复杂的查询语法,例如布尔查询(AND/OR/NOT)、范围查询、通配符查询等。

(4) 相关性评分

Lucene 使用 TF-IDF 和 BM25 算法对文档相关性进行评分,并返回与查询最匹配的结果。


4. 为什么 Elasticsearch 使用 Lucene?

  • 高性能:Lucene 提供了非常高效的索引和搜索能力。
  • 成熟可靠:Lucene 已经过多年的开发和优化,是业界公认的标准。
  • 灵活性:Lucene 提供了丰富的功能,比如分词、查询解析、打分机制等。
  • 开源:作为 Apache 基金会的开源项目,它与 Elasticsearch 的开源理念一致。

5. Lucene 和 Elasticsearch 的区别

特性LuceneElasticsearch
类型分布式搜索引擎
用户接口Java APIRESTful API
功能提供核心搜索和索引功能提供分布式、横向扩展和高可用能力
配置和使用需要开发者手动集成和配置开箱即用,内置大量功能
分布式支持原生分布式支持

6. 总结

Lucene 是 Elasticsearch 的基础组件,为其提供了核心的搜索和索引能力。但 Elasticsearch 不仅仅是 Lucene,它还添加了分布式架构、集群管理、REST API 等,使得用户可以更轻松地构建和管理搜索解决方案。

分片

curl -u admin:OLP5HNAT1NU2WQGUJ441M5TP2MPXZBRM 10.10.x.x:xx/_cat/shards?v
_cat/shards/woqu02?v

在这里插入图片描述

在这里插入图片描述

这行输出来自Elasticsearch的_cat/shards API,显示了某个索引的分片信息。以下是对每一列的解释:

filebeat-7.16.2-2024.12.23-000001  0 r STARTED 11533  3.1mb  245.0.2.227 es-510083ba-es-data-0

列的解释:

  1. 索引名称 (filebeat-7.16.2-2024.12.23-000001):这是显示分片信息的索引名称。这个索引遵循filebeat-<版本>-<日期>-<分片号>的命名模式。

  2. 分片号 (0):表示这个是索引的第一个主分片。Elasticsearch中的索引被分为多个分片,每个分片由一个编号来标识,这里是主分片(0)。

  3. 分片类型 (r):表示该分片的类型。r表示这是一个副本分片,副本分片是主分片的复制品,用于冗余备份和负载均衡。

  4. 分片状态 (STARTED):表示该分片的当前状态。STARTED表示该分片已经激活并且成功分配到集群中的某个节点。

  5. 文档数量 (11533):表示该分片中存储的文档数量,这里是11533个文档。

  6. 磁盘使用空间 (3.1mb):该分片使用的磁盘空间大小,这里是3.1 MB。

  7. 节点IP地址 (245.0.2.227):表示存储该分片的Elasticsearch节点的IP地址。

  8. 节点名称 (es-510083ba-es-data-0):这是存储该分片的Elasticsearch节点的名称,帮助识别处理该分片的具体节点。

这段输出有助于了解在Elasticsearch集群中数据的分布情况和分片的状态。

扩容分片

在Elasticsearch中,扩容分片(shard expansion)不是直接改变现有分片数量的操作,因为每个索引的分片数量在创建时是固定的。要增加分片,通常需要通过以下几种方式:

1. 创建新的索引并重新索引

如果你希望增加分片数量,可以创建一个新的索引,并在该索引上设置更多的主分片。然后,通过重新索引(reindex)将旧索引中的数据迁移到新的索引。

步骤:

  1. 创建新的索引,设置所需的分片数。例如:

    PUT /new_index_name
    {"settings": {"number_of_shards": 6,  # 你需要的分片数量"number_of_replicas": 1  # 副本数}
    }
    
  2. 重新索引数据从旧索引到新索引:

    POST /_reindex
    {"source": {"index": "old_index_name"},"dest": {"index": "new_index_name"}
    }
    
POST /_reindex
{"source": {"index": "nyc_taxis"},"dest": {"index": "woqu01"},"conflicts": "proceed"
}GET /nyc_taxis/_search?size=10GET /woqu02/_search?size=10GET /nyc_taxis/_mappingGET /woqu02/_mappingGET _cat/indices?vGET /woqu01/_count

过程非常漫长。。。

在这里插入图片描述
在这里插入图片描述

  1. 切换应用程序以开始使用新的索引。

  2. 删除旧的索引(如果不再需要的话):

    DELETE /old_index_name
    

2. 使用索引别名(Index Alias)

如果你不想在应用中修改索引名称,可以使用索引别名来进行无缝切换。索引别名使你可以在多个索引之间进行切换,而不必修改应用程序中的索引名称。

步骤:

  1. 创建新的索引并设置更多的分片。
  2. 将新索引的别名指向旧索引。
  3. 使用_reindex将数据迁移到新索引。
  4. 更新别名,指向新的索引。

示例:

POST /_aliases
{"actions": [{ "add": { "index": "new_index_name", "alias": "index_alias" } },{ "remove": { "index": "old_index_name", "alias": "index_alias" } }]
}

3. 调整副本数(Replica Shards)

如果你的目的是为了负载均衡或提高可用性,增加副本分片(replica shards)是一个有效的解决方案。副本分片不会增加主分片的数量,但会提升查询性能和故障恢复能力。

步骤:

  1. 修改索引的副本数:
    PUT /your_index_name/_settings
    {"settings": {"number_of_replicas": 2  # 设置副本数量}
    }
    

4. 使用跨集群复制(CCR)

如果你需要在多个集群之间复制数据并增加分片,可以考虑使用**跨集群复制(CCR)**来分发数据到多个集群中。

总结:

  • Elasticsearch不支持直接增加现有索引的主分片数量。
  • 你可以通过重新索引将数据迁移到新的具有更多分片的索引中。
  • 如果只是想增加容错能力或负载均衡,可以增加副本分片的数量。

通常推荐的做法是使用索引别名和重新索引的方式来实现分片扩容,避免影响现有的业务和数据。

扩容副本

PUT /nyc_taxis/_settings
{"index": {"number_of_replicas": 2}
}GET /_cat/indices/nyc_taxisGET /_cat/shards/nyc_taxisGEt /_cat/nodes

在这里插入图片描述

在这里插入图片描述

esrally

安装

https://cloud.tencent.com/developer/article/1959723

docker load -i rally.tar
docker run -t -i -v /bpx:/bpx  elastic/rally bash
esrally race --track=nyc_taxis--test-mode --pipeline=benchmark-only --target-hosts="http://10.10.x.x:xx" --client-options="basic_auth_user:'admin',basic_auth_password:'OLP5HNAT1NU2WQGUJ441M5TP2MPXZBRM'"

数据库介绍

https://cloud.tencent.com/developer/article/1595636

/rally/.rally/benchmarks/tracks/default/download.sh geonames
tar -xf rally-track-data-geonames.tar -C ~/.rally/benchmarks
esrally race --track=geonames --test-mode --pipeline=benchmark-only --target-hosts="http://10.10.66.231:12219" --client-options="basic_auth_user:'admin',basic_auth_password:'OLP5HNAT1NU2WQGUJ441M5TP2MPXZBRM'"  --report-format=csv --report-file=~/result.csv
____        ____/ __ \____ _/ / /_  __/ /_/ / __ `/ / / / / // _, _/ /_/ / / / /_/ /
/_/ |_|\__,_/_/_/\__, //____/[INFO] Race id is [e69491a8-20d4-4ca2-9503-bbd37817f2ba]
[INFO] Downloading track data (30.6 kB total size)                                [100.0%]
[INFO] Decompressing track data from [/rally/.rally/benchmarks/data/nyc_taxis/documents-1k.json.bz2] to [/rally/.rally/benchmarks/data/nyc_taxis/documents-1k.json] ... [OK]
[INFO] Preparing file offset table for [/rally/.rally/benchmarks/data/nyc_taxis/documents-1k.json] ... [OK]
[INFO] Racing on track [nyc_taxis], challenge [append-no-conflicts] and car ['external'] with version [7.16.2].[WARNING] merges_total_time is 58649 ms indicating that the cluster is not in a defined clean state. Recorded index time metrics may be misleading.
[WARNING] indexing_total_time is 15700 ms indicating that the cluster is not in a defined clean state. Recorded index time metrics may be misleading.
[WARNING] refresh_total_time is 79088 ms indicating that the cluster is not in a defined clean state. Recorded index time metrics may be misleading.
Running delete-index                                                           [100% done]
Running create-index                                                           [100% done]
Running check-cluster-health                                                   [100% done]
Running index                                                                  [100% done]
Running refresh-after-index                                                    [100% done]
Running force-merge                                                            [100% done]
Running refresh-after-force-merge                                              [100% done]
Running wait-until-merges-finish                                               [100% done]
Running default                                                                [100% done]
Running range                                                                  [100% done]
Running distance_amount_agg                                                    [100% done]
Running autohisto_agg                                                          [100% done]
Running date_histogram_agg                                                     [100% done]------------------------------------------------------_______             __   _____/ ____(_)___  ____ _/ /  / ___/_________  ________/ /_  / / __ \/ __ `/ /   \__ \/ ___/ __ \/ ___/ _ \/ __/ / / / / / /_/ / /   ___/ / /__/ /_/ / /  /  __/
/_/   /_/_/ /_/\__,_/_/   /____/\___/\____/_/   \___/
------------------------------------------------------|                                                         Metric |                Task |          Value |   Unit |
|---------------------------------------------------------------:|--------------------:|---------------:|-------:|
|                     Cumulative indexing time of primary shards |                     |     0.265783   |    min |
|             Min cumulative indexing time across primary shards |                     |     0          |    min |
|          Median cumulative indexing time across primary shards |                     |     0          |    min |
|             Max cumulative indexing time across primary shards |                     |     0.136317   |    min |
|            Cumulative indexing throttle time of primary shards |                     |     0          |    min |
|    Min cumulative indexing throttle time across primary shards |                     |     0          |    min |
| Median cumulative indexing throttle time across primary shards |                     |     0          |    min |
|    Max cumulative indexing throttle time across primary shards |                     |     0          |    min |
|                        Cumulative merge time of primary shards |                     |     0.977483   |    min |
|                       Cumulative merge count of primary shards |                     |  1030          |        |
|                Min cumulative merge time across primary shards |                     |     0          |    min |
|             Median cumulative merge time across primary shards |                     |     0          |    min |
|                Max cumulative merge time across primary shards |                     |     0.652033   |    min |
|               Cumulative merge throttle time of primary shards |                     |     0          |    min |
|       Min cumulative merge throttle time across primary shards |                     |     0          |    min |
|    Median cumulative merge throttle time across primary shards |                     |     0          |    min |
|       Max cumulative merge throttle time across primary shards |                     |     0          |    min |
|                      Cumulative refresh time of primary shards |                     |     1.3198     |    min |
|                     Cumulative refresh count of primary shards |                     |  9938          |        |
|              Min cumulative refresh time across primary shards |                     |     0          |    min |
|           Median cumulative refresh time across primary shards |                     |     0          |    min |
|              Max cumulative refresh time across primary shards |                     |     0.98985    |    min |
|                        Cumulative flush time of primary shards |                     |     0.03155    |    min |
|                       Cumulative flush count of primary shards |                     |    21          |        |
|                Min cumulative flush time across primary shards |                     |     0          |    min |
|             Median cumulative flush time across primary shards |                     |     0          |    min |
|                Max cumulative flush time across primary shards |                     |     0.0176833  |    min |
|                                        Total Young Gen GC time |                     |     0.009      |      s |
|                                       Total Young Gen GC count |                     |     1          |        |
|                                          Total Old Gen GC time |                     |     0          |      s |
|                                         Total Old Gen GC count |                     |     0          |        |
|                                                   Dataset size |                     |     0.083899   |     GB |
|                                                     Store size |                     |     0.083899   |     GB |
|                                                  Translog size |                     |     0.0555213  |     GB |
|                                         Heap used for segments |                     |     0.161285   |     MB |
|                                       Heap used for doc values |                     |     0.0156403  |     MB |
|                                            Heap used for terms |                     |     0.124207   |     MB |
|                                            Heap used for norms |                     |     0.00256348 |     MB |
|                                           Heap used for points |                     |     0          |     MB |
|                                    Heap used for stored fields |                     |     0.0188751  |     MB |
|                                                  Segment count |                     |    40          |        |
|                                    Total Ingest Pipeline count |                     |     6          |        |
|                                     Total Ingest Pipeline time |                     |     0.002      |      s |
|                                   Total Ingest Pipeline failed |                     |     0          |        |
|                                                 Min Throughput |               index | 16438.7        | docs/s |
|                                                Mean Throughput |               index | 16438.7        | docs/s |
|                                              Median Throughput |               index | 16438.7        | docs/s |
|                                                 Max Throughput |               index | 16438.7        | docs/s |
|                                        50th percentile latency |               index |    72.4146     |     ms |
|                                       100th percentile latency |               index |    94.6473     |     ms |
|                                   50th percentile service time |               index |    72.4146     |     ms |
|                                  100th percentile service time |               index |    94.6473     |     ms |
|                                                     error rate |               index |     0          |      % |
|                                                 Min Throughput |             default |   133.61       |  ops/s |
|                                                Mean Throughput |             default |   133.61       |  ops/s |
|                                              Median Throughput |             default |   133.61       |  ops/s |
|                                                 Max Throughput |             default |   133.61       |  ops/s |
|                                       100th percentile latency |             default |    12.4156     |     ms |
|                                  100th percentile service time |             default |     4.49154    |     ms |
|                                                     error rate |             default |     0          |      % |
|                                                 Min Throughput |               range |   155.02       |  ops/s |
|                                                Mean Throughput |               range |   155.02       |  ops/s |
|                                              Median Throughput |               range |   155.02       |  ops/s |
|                                                 Max Throughput |               range |   155.02       |  ops/s |
|                                       100th percentile latency |               range |     3.1497     |     ms |
|                                  100th percentile service time |               range |     3.1497     |     ms |
|                                                     error rate |               range |     0          |      % |
|                                                 Min Throughput | distance_amount_agg |    40.07       |  ops/s |
|                                                Mean Throughput | distance_amount_agg |    40.07       |  ops/s |
|                                              Median Throughput | distance_amount_agg |    40.07       |  ops/s |
|                                                 Max Throughput | distance_amount_agg |    40.07       |  ops/s |
|                                       100th percentile latency | distance_amount_agg |     6.27117    |     ms |
|                                  100th percentile service time | distance_amount_agg |     6.27117    |     ms |
|                                                     error rate | distance_amount_agg |     0          |      % |
|                                                 Min Throughput |       autohisto_agg |    37.05       |  ops/s |
|                                                Mean Throughput |       autohisto_agg |    37.05       |  ops/s |
|                                              Median Throughput |       autohisto_agg |    37.05       |  ops/s |
|                                                 Max Throughput |       autohisto_agg |    37.05       |  ops/s |
|                                       100th percentile latency |       autohisto_agg |     5.20097    |     ms |
|                                  100th percentile service time |       autohisto_agg |     5.20097    |     ms |
|                                                     error rate |       autohisto_agg |     0          |      % |
|                                                 Min Throughput |  date_histogram_agg |    73.79       |  ops/s |
|                                                Mean Throughput |  date_histogram_agg |    73.79       |  ops/s |
|                                              Median Throughput |  date_histogram_agg |    73.79       |  ops/s |
|                                                 Max Throughput |  date_histogram_agg |    73.79       |  ops/s |
|                                       100th percentile latency |  date_histogram_agg |     4.10032    |     ms |
|                                  100th percentile service time |  date_histogram_agg |     4.10032    |     ms |
|                                                     error rate |  date_histogram_agg |     0          |      % |--------------------------------
[INFO] SUCCESS (took 18 seconds)
--------------------------------

结果解释

https://xie.infoq.cn/article/75db26198fd344c4db563f43f

GET /_cat/indices/nyc_taxis?v

在这里插入图片描述
GET /nyc_taxis/_search?pretty

在这里插入图片描述
GET nyc_taxis/_mapping?pretty
在这里插入图片描述

备份

在这里插入图片描述
、

https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshot-restore.html


http://www.ppmy.cn/devtools/145964.html

相关文章

云数智融合体系建设实践——以工行软件开发中心为例

随着“云计算第三次浪潮”的涌动&#xff0c;业界正见证着一场围绕“算力”的结构性变革。云计算、大数据、人工智能三大核心技术的深度融合&#xff0c;正推动着算力基础设施的快速发展&#xff0c;实现算力的高效调度与利用&#xff0c;也标志着业界对云计算体系布局的全新理…

Redis篇--应用篇1--会话存储(session共享)

1、概述 实现Session共享是构建分布式Web应用时的一个重要需求&#xff0c;尤其是在水平扩展和高可用性要求较高的场景下。 在分布式服务或集群服务中往往会出现这样一个问题&#xff1a;用户登录A服务后可以正常访问A服务中的接口。但是我们知道&#xff0c;分布式服务通常都…

SpringAI人工智能开发框架005---SpringAI文本转语音_语音转文本_音频翻译程序接口编写_英文音频翻译_中文音频翻译_指定模型

可以看到SpringAi中关于音频的API帮助文档可以去看一下. 可以看到帮助文档. 这部分功能就是把声音变成文本,以及把文本变成声音. 去创建一个项目 然后修改一下,仓库,引入 sring ai的仓库 然后指定一下版本,这里要用java 17的版本. 然后这里用的api-key 这个key, 这里配置到…

自动化测试框架playwright 常见问题和解决方案

自动化课程已经讲完了playwright框架&#xff0c;很多同学跃跃欲试&#xff0c;所谓实践出真知&#xff0c;这不在实践中就要到了一些问题&#xff0c;小编也给大家整理出来了&#xff0c;送个有需要的同学&#xff0c;记得点赞收藏哦~~ 01安装问题 问题描述&#xff1a; 在安…

自动屏蔽频繁访问IP,提升服务器安全:实战脚本解析

在当前的数字化时代&#xff0c;服务器安全成为了一个不可忽视的重要环节。无论是企业网站还是个人博客&#xff0c;都面临着来自各方的潜在威胁。其中&#xff0c;恶意访问和频繁登录尝试更是让管理员头疼不已。本文将为大家介绍如何通过脚本自动屏蔽频繁访问和尝试SSH登录的I…

QT调用Sqlite数据库

QT设计UI界面&#xff0c;后台访问数据库&#xff0c;实现数据库数据的增删改查。 零售商店系统 数据库表&#xff1a; 分别是顾客表&#xff0c;订单详情表&#xff0c;订单表&#xff0c;商品表 表内字段详情如下&#xff1a; 在QT的Pro文件中添加sql&#xff0c;然后添加头…

ElementUI 的 form 表单校验

文章目录 需求分析 需求 分析 <el-form:model"form"status-icon:rules"rules"ref"formRef"label-width"150px"class"customForm"size"small"><el-form-itemlabel"姓名&#xff1a;"prop"…

Kibana安装教程——Linux

Kibana安装教程——Linux 一、安装 下载安装包&#xff1a; 官网下载地址&#xff1a;https://www.elastic.co/cn/downloads/kibana 上传包到linux 切换到安装目录下 解压&#xff1a;tar -zxvf kibana-7.17.1-linux-x86_64.tar.gz 重命名安装文件夹 mv kibana-7.17.1-linux-x…