Elasticsearch相关知识@1

embedded/2024/12/24 10:00:39/

目录标题

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

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

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/embedded/148305.html

相关文章

Spring(七)Spring Cloud----Feign、Zuul和Apollo

文章目录 一、服务调用Feign1.1 Feign的基本使用1.2 Feign的属性配置1.2.1 Ribbon配置1.2.2 Hystrix配置 二、网关服务Zuul2.1 Zuul的基本使用2.1.1 请求路由2.1.2 请求过滤 2.2 路由详解2.2.1 传统路由配置2.2.2 服务路由配置2.2.3 服务路由的默认规则2.2.4 自定义路由映射规则…

linux 根据名称 杀死linux 上某个jar进程或其他进程

在 Linux 系统上&#xff0c;可以通过进程名称杀死特定的 .jar 进程。以下是具体的步骤&#xff1a; 1. 查找目标进程 通过 ps 命令查找运行的 .jar 文件对应的进程。 示例&#xff1a; 假设目标进程的 .jar 文件名是 myapp.jar。 ps aux | grep myapp.jar输出示例&#x…

步进电机控制原理

前言 讲讲步进电机的控制原理。相关知识做介绍&#xff0c;以及个人的理解。 基础知识PPT 频率越快速度越快 原理总结 一、什么是步进电机 步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号&#xff0c;转子就转动一个角度或前进一步&#…

【总结(三)】单片机重点知识总结记录(串口重定向+按键消抖+延时)

一.串口重定向 串口重定向代码如下 注意&#xff1a; 要添加头文件include "stdio.h"要勾选微库&#xff0c;即Use MicroLIB /**********重定向************/ //串口1 int fputc(int ch, FILE *f) {HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff)…

【JUC编程】JUC 多线程基础全面解析(待更新版)

文章目录 JUC 多线程基础全面解析一、线程与并发基础1. 什么是线程&#xff1f;2. 并发与并行的区别3. Java 线程的基本创建方式 二、JUC 核心组件1. 线程池2. 锁机制3. 并发集合 三、线程间通信工具1. CountDownLatch2. CyclicBarrier3. Semaphore 四、原子操作类五、并发工具…

dcdc buck闭环数控型稳压电源仿真+单片机程序及实验报告

资料下载地址&#xff1a;dcdc buck闭环数控型稳压电源仿真单片机程序及实验报告 一、实验目的 设计并制作一台数控型DCDC稳压电源。 二、实验要求 1、输出电压范围 &#xff1a;0.5v~4.5v。可以通过按键实现电压调整 2、必须使用PID闭环控制算法 3、发挥部分&#xff1a; PID…

刷题 两数之和

https://leetcode.cn/problems/two-sum/submissions/588870256/?envTypestudy-plan-v2&envIdtop-100-liked 参考快排算法 https://blog.csdn.net/oSKyTonight/article/details/129813861 /** Note: The returned array must be malloced, assume caller calls free(). */…

MapReduce的shuffle过程详解

文章目录 MapReduce的shuffle过程详解一、引言二、Shuffle过程详解1、Map端Shuffle1.1、分区&#xff08;Partition&#xff09;1.2、排序&#xff08;Sort&#xff09;1.3、分割&#xff08;Spill&#xff09; 2、Reduce端Shuffle 三、使用示例四、总结 MapReduce的shuffle过程…