我刚打酱油去了,不好意思

【搜索客社区日报】第1888期 (2024-08-27)

1. elastic可观测工程师认证考试经验分享(需要梯子)
https://mohamedsaidani34.medium.com/

2. 5分钟教会你拿filebeats发送nginx日志(需要梯子)
https://medium.com/elastictalk ... ea193

3. 聊聊elasticalert通知?(需要梯子)
https://medium.com/%40musabdog ... 32598

编辑:斯蒂文
更多资讯:http://news.searchkit.cn
继续阅读 »
1. elastic可观测工程师认证考试经验分享(需要梯子)
https://mohamedsaidani34.medium.com/

2. 5分钟教会你拿filebeats发送nginx日志(需要梯子)
https://medium.com/elastictalk ... ea193

3. 聊聊elasticalert通知?(需要梯子)
https://medium.com/%40musabdog ... 32598

编辑:斯蒂文
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】 第1889期 (2024-08-28)

1.使用单独的索引去稳定 Solr 的近实时查询效率(搭梯)
https://medium.com/%40jeevansa ... 67140
2.减少 95% 资源的向量搜索 | 使用云搜索的 DiskANN
https://mp.weixin.qq.com/s/ddAv8X4qHKgfgpBkavLCPA
3.使用 Elasticsearch 来RAG检索非英语文本。(搭梯)
https://medium.com/%40thongpra ... ff0cd


编辑:kin122 
更多资讯:http://news.searchkit.cn
继续阅读 »
1.使用单独的索引去稳定 Solr 的近实时查询效率(搭梯)
https://medium.com/%40jeevansa ... 67140
2.减少 95% 资源的向量搜索 | 使用云搜索的 DiskANN
https://mp.weixin.qq.com/s/ddAv8X4qHKgfgpBkavLCPA
3.使用 Elasticsearch 来RAG检索非英语文本。(搭梯)
https://medium.com/%40thongpra ... ff0cd


编辑:kin122 
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第1887期 (2024-08-26)

1、视频生成新纪元:震撼开源的智谱AI CogVideoX模型深度解析
https://blog.csdn.net/xiaobing ... 97406

2、揭秘谷歌搜索排名的工作原理,深入理解搜索引擎的整体架构仍然至关重要。
https://www.infoq.cn/article/UNmjGDyGK5XBLIAEt7Ui

3、零基础5分钟上手亚马逊云科技核心云架构知识-创建NoSQL数据库
https://blog.csdn.net/m0_66628 ... 46634

4、【AI 大模型】使用 AI 大模型 编程 ② ( CodeGeeX 工具 | CodeGeeX 功能 | VSCode 安装使用 CodeGeeX | Tabby 工具 | Tabby 部署与使用 )
https://blog.csdn.net/shuliang ... 37850

5、【人工智能】Python融合机器学习、深度学习和微服务的创新之路
https://blog.csdn.net/2302_802 ... 25190

编辑:Muse
更多资讯:http://news.searchkit.cn
继续阅读 »
1、视频生成新纪元:震撼开源的智谱AI CogVideoX模型深度解析
https://blog.csdn.net/xiaobing ... 97406

2、揭秘谷歌搜索排名的工作原理,深入理解搜索引擎的整体架构仍然至关重要。
https://www.infoq.cn/article/UNmjGDyGK5XBLIAEt7Ui

3、零基础5分钟上手亚马逊云科技核心云架构知识-创建NoSQL数据库
https://blog.csdn.net/m0_66628 ... 46634

4、【AI 大模型】使用 AI 大模型 编程 ② ( CodeGeeX 工具 | CodeGeeX 功能 | VSCode 安装使用 CodeGeeX | Tabby 工具 | Tabby 部署与使用 )
https://blog.csdn.net/shuliang ... 37850

5、【人工智能】Python融合机器学习、深度学习和微服务的创新之路
https://blog.csdn.net/2302_802 ... 25190

编辑:Muse
更多资讯:http://news.searchkit.cn 收起阅读 »

Easysearch 性能测试方法概要

20240813-e1ba1e73-53ad-4265-8db9-f71e56b5d626.png

INFINI Easysearch

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 衍生自基于开源协议 Apache 2.0 的 Elasticsearch 7.10 版本,完善和支持更多的企业级功能,优化搜索业务场景,以保证更佳的数据探索与分析体验。

Easysearch 的主要特点:

  • 兼容 Elasticsearch,业务代码无需改动;可平滑迁移
  • 企业级安全;更稳定可靠
  • 企业级管理后台(多集群统一管理,实现运营标准化、自动化)
  • 信创适配(全面适配国产 CPU/OS/服务器,支持国密算法)

Easysearch 快速体验,请参阅:

Easysearch,地表最强,没有之一!

Loadgen

Loadgen 是 Elasticsearch 专属压测工具,用来对 Easysearch 或者网关进行压力测试。

Loadgen 的特点:

  • 性能强劲
  • 轻量级无依赖
  • 支持模板化参数随机
  • 支持高并发
  • 支持压测端均衡流量控制
  • 支持服务端返回值校验

当前最新版本为 1.26.1-598,下载链接如下:

https://release.infinilabs.com/loadgen/stable/

下载并解压安装包后,得到二进制文件。

查看版本信息。

$ ./loadgen-linux-amd64 -v
   __   ___  _      ___  ___   __    __
  / /  /___\/_\    /   \/ _ \ /__\/\ \ \
 / /  //  ///_\\  / /\ / /_\//_\ /  \/ /
/ /__/ \_//  _  \/ /_// /_\\//__/ /\  /
\____|___/\_/ \_/___,'\____/\__/\_\ \/

[LOADGEN] A http load generator and testing suite.
[LOADGEN] 1.26.1#598, 2024-08-14 04:50:03, 2024-12-31 10:10:10, 00f15fd86834d7ea539f6d66ee608e3915eef0e3
loadgen 1.26.1 598 2024-08-14 04:50:03 +0000 UTC 2024-12-31 10:10:10 +0000 UTC 00f15fd86834d7ea539f6d66ee608e3915eef0e3

Loadgen 测试

Loadgen 使用非常简单,下面演示如何进行查询压测。

  1. 建立索引,根据节点数调节分片数。
curl -X PUT -H "Content-Type: application/json" \
-ku admin:xxx "https://localhost:9200/loadtest" -d'
{
  "settings":{
    "number_of_shards":"3",
    "number_of_replicas":1,
    "translog":{
      "durability":"async"
    }
  }
}'
{"acknowledged":true,"shards_acknowledged":true,"index":"loadtest"}
  1. 创建 loadgen.dsl.shawnyan 配置文件,定义查询
GET loadtest/_search
{"query": {"term": {"id.keyword": {"value": $[[id]]}}}}
  1. 执行压测,-d 表示秒数,-c 表示并发数。
$ ES_ENDPOINT=https://localhost:9200 ES_USERNAME=admin ES_PASSWORD=xxx ./loadgen-linux-amd64 -run loadgen.dsl.shawnyan -d 10 -c 2
   __   ___  _      ___  ___   __    __
  / /  /___\/_\    /   \/ _ \ /__\/\ \ \
 / /  //  ///_\\  / /\ / /_\//_\ /  \/ /
/ /__/ \_//  _  \/ /_// /_\\//__/ /\  /
\____|___/\_/ \_/___,'\____/\__/\_\ \/

[LOADGEN] A http load generator and testing suite.
[LOADGEN] 1.26.1#598, 2024-08-14 04:50:03, 2024-12-31 10:10:10, 00f15fd86834d7ea539f6d66ee608e3915eef0e3
[08-19 16:43:27] [INF] [env.go:179] configuration auto reload enabled
[08-19 16:43:27] [INF] [app.go:285] initializing loadgen, pid: 30792
[08-19 16:43:27] [INF] [app.go:286] using config: /data/es/loadgen.yml
[08-19 16:43:27] [INF] [module.go:155] started plugin: statsd
[08-19 16:43:27] [INF] [module.go:161] all modules are started
[08-19 16:43:27] [INF] [instance.go:78] workspace: /data/es/data/loadgen/nodes/cr1gabqr90cng685o2s0
[08-19 16:43:27] [INF] [app.go:511] loadgen is up and running now.
[08-19 16:43:27] [INF] [main.go:403] loading config: /data/es/loadgen.dsl.shawnyan

21108 requests finished in 9.79061677s, 1.08MB sent, 3.22MB received

[Loadgen Client Metrics]
Requests/sec:           2110.63
Request Traffic/sec:    110.22KB
Total Transfer/sec:     440.00KB
Fastest Request:        680.198µs
Slowest Request:        12.409574ms
Status 200:             21108

[Latency Metrics]
10000 samples of 21108 events
Cumulative:     8.732205871s
HMean:          851.869µs
Avg.:           873.22µs
p50:            839.498µs
p75:            914.298µs
p95:            1.059197ms
p99:            1.327098ms
p999:           4.83579ms
Long 5%:        1.394411ms
Short 5%:       724.226µs
Max:            11.618475ms
Min:            680.198µs
Range:          10.938277ms
StdDev:         289.216µs
Rate/sec.:      2110.63

[Latency Distribution]
       680µs - 1.774ms ------------------------------
     1.774ms - 2.867ms -
     2.867ms - 3.961ms -
     3.961ms - 5.055ms -
     5.055ms - 6.149ms -
     6.149ms - 7.243ms -
     7.243ms - 8.336ms -
      8.336ms - 9.43ms -
     9.43ms - 10.524ms -
   10.524ms - 11.618ms -

[Estimated Server Metrics]
Requests/sec:           2155.94
Avg Req Time:           927.668µs
Transfer/sec:           449.45KB

更多内容请参阅文档:

https://infinilabs.cn/docs/latest/gateway/getting-started/benchmark/

Rally

如果对 Elasticsearch 熟悉的同学,也可尝试使用 Rally 对 Easysearch 进行测试。

Rally 是 Elasticsearch 的基准测试框架。它可以帮助您完成以下任务:

  • 安装 Elasticsearch 集群以进行基准测试
  • 跨 Elasticsearch 版本管理基准数据和规范
  • 运行基准测试并记录结果
  • 通过连接遥测设备来查找性能问题
  • 比较性能结果

安装 Rally。

[root@easysearch /]# pip3 install esrally
Requirement already satisfied: esrally in /usr/local/lib/python3.9/site-packages (2.11.0)
Requirement already satisfied: py-cpuinfo==7.0.0 in /usr/local/lib/python3.9/site-packages (from esrally) (7.0.0)
Requirement already satisfied: elastic-transport==8.4.1 in /usr/local/lib/python3.9/site-packages (from esrally) (8.4.1)
Requirement already satisfied: google-resumable-media[requests]==1.1.0 in /usr/local/lib/python3.9/site-packages (from esrally) (1.1.0)
Requirement already satisfied: urllib3==1.26.18 in /usr/local/lib/python3.9/site-packages (from esrally) (1.26.18)
Requirement already satisfied: google-auth==1.22.1 in /usr/local/lib/python3.9/site-packages (from esrally) (1.22.1)
Requirement already satisfied: thespian==3.10.1 in /usr/local/lib/python3.9/site-packages (from esrally) (3.10.1)
Requirement already satisfied: jsonschema==3.1.1 in /usr/local/lib/python3.9/site-packages (from esrally) (3.1.1)
Requirement already satisfied: markupsafe==2.0.1 in /usr/local/lib64/python3.9/site-packages (from esrally) (2.0.1)
Requirement already satisfied: yappi==1.5.1 in /usr/local/lib64/python3.9/site-packages (from esrally) (1.5.1)
Requirement already satisfied: psutil==5.9.4 in /usr/local/lib64/python3.9/site-packages (from esrally) (5.9.4)
Requirement already satisfied: certifi in /usr/local/lib/python3.9/site-packages (from esrally) (2024.7.4)
Requirement already satisfied: elasticsearch[async]==8.6.1 in /usr/local/lib/python3.9/site-packages (from esrally) (8.6.1)
Requirement already satisfied: ijson==2.6.1 in /usr/local/lib/python3.9/site-packages (from esrally) (2.6.1)
Requirement already satisfied: jinja2==3.1.4 in /usr/local/lib/python3.9/site-packages (from esrally) (3.1.4)
Requirement already satisfied: requests<2.32.0 in /usr/local/lib/python3.9/site-packages (from esrally) (2.31.0)
Requirement already satisfied: tabulate==0.8.9 in /usr/local/lib/python3.9/site-packages (from esrally) (0.8.9)
Requirement already satisfied: zstandard==0.21.0 in /usr/local/lib64/python3.9/site-packages (from esrally) (0.21.0)
Requirement already satisfied: docker==6.0.0 in /usr/local/lib/python3.9/site-packages (from esrally) (6.0.0)
Requirement already satisfied: websocket-client>=0.32.0 in /usr/local/lib/python3.9/site-packages (from docker==6.0.0->esrally) (1.8.0)
Requirement already satisfied: packaging>=14.0 in /usr/lib/python3.9/site-packages (from docker==6.0.0->esrally) (20.9)
Requirement already satisfied: aiohttp<4,>=3 in /usr/local/lib64/python3.9/site-packages (from elasticsearch[async]==8.6.1->esrally) (3.10.4)
Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (0.4.0)
Requirement already satisfied: six>=1.9.0 in /usr/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (1.15.0)
Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (4.9)
Requirement already satisfied: setuptools>=40.3.0 in /usr/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (53.0.0)
Requirement already satisfied: cachetools<5.0,>=2.0.0 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (4.2.4)
Requirement already satisfied: google-crc32c<2.0dev,>=1.0 in /usr/local/lib64/python3.9/site-packages (from google-resumable-media[requests]==1.1.0->esrally) (1.5.0)
Requirement already satisfied: attrs>=17.4.0 in /usr/local/lib/python3.9/site-packages (from jsonschema==3.1.1->esrally) (24.2.0)
Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.9/site-packages (from jsonschema==3.1.1->esrally) (8.2.0)
Requirement already satisfied: pyrsistent>=0.14.0 in /usr/local/lib64/python3.9/site-packages (from jsonschema==3.1.1->esrally) (0.20.0)
Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.9.4)
Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.4.1)
Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.3.1)
Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (4.0.3)
Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (2.3.7)
Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (6.0.5)
Requirement already satisfied: pyparsing>=2.0.2 in /usr/lib/python3.9/site-packages (from packaging>=14.0->docker==6.0.0->esrally) (2.4.7)
Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /usr/local/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth==1.22.1->esrally) (0.6.0)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/site-packages (from requests<2.32.0->esrally) (3.7)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib64/python3.9/site-packages (from requests<2.32.0->esrally) (3.3.2)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.9/site-packages (from importlib-metadata->jsonschema==3.1.1->esrally) (3.20.0)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[root@easysearch /]# esrally --version
esrally 2.11.0
[root@easysearch /]#

关于 Rally 的更多内容,请参阅官方文档:

https://esrally.readthedocs.io/en/stable/

作者:少安事务所
原文:https://mp.weixin.qq.com/s/9eEH38kgsw4i150CJqyxvQ

继续阅读 »

20240813-e1ba1e73-53ad-4265-8db9-f71e56b5d626.png

INFINI Easysearch

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 衍生自基于开源协议 Apache 2.0 的 Elasticsearch 7.10 版本,完善和支持更多的企业级功能,优化搜索业务场景,以保证更佳的数据探索与分析体验。

Easysearch 的主要特点:

  • 兼容 Elasticsearch,业务代码无需改动;可平滑迁移
  • 企业级安全;更稳定可靠
  • 企业级管理后台(多集群统一管理,实现运营标准化、自动化)
  • 信创适配(全面适配国产 CPU/OS/服务器,支持国密算法)

Easysearch 快速体验,请参阅:

Easysearch,地表最强,没有之一!

Loadgen

Loadgen 是 Elasticsearch 专属压测工具,用来对 Easysearch 或者网关进行压力测试。

Loadgen 的特点:

  • 性能强劲
  • 轻量级无依赖
  • 支持模板化参数随机
  • 支持高并发
  • 支持压测端均衡流量控制
  • 支持服务端返回值校验

当前最新版本为 1.26.1-598,下载链接如下:

https://release.infinilabs.com/loadgen/stable/

下载并解压安装包后,得到二进制文件。

查看版本信息。

$ ./loadgen-linux-amd64 -v
   __   ___  _      ___  ___   __    __
  / /  /___\/_\    /   \/ _ \ /__\/\ \ \
 / /  //  ///_\\  / /\ / /_\//_\ /  \/ /
/ /__/ \_//  _  \/ /_// /_\\//__/ /\  /
\____|___/\_/ \_/___,'\____/\__/\_\ \/

[LOADGEN] A http load generator and testing suite.
[LOADGEN] 1.26.1#598, 2024-08-14 04:50:03, 2024-12-31 10:10:10, 00f15fd86834d7ea539f6d66ee608e3915eef0e3
loadgen 1.26.1 598 2024-08-14 04:50:03 +0000 UTC 2024-12-31 10:10:10 +0000 UTC 00f15fd86834d7ea539f6d66ee608e3915eef0e3

Loadgen 测试

Loadgen 使用非常简单,下面演示如何进行查询压测。

  1. 建立索引,根据节点数调节分片数。
curl -X PUT -H "Content-Type: application/json" \
-ku admin:xxx "https://localhost:9200/loadtest" -d'
{
  "settings":{
    "number_of_shards":"3",
    "number_of_replicas":1,
    "translog":{
      "durability":"async"
    }
  }
}'
{"acknowledged":true,"shards_acknowledged":true,"index":"loadtest"}
  1. 创建 loadgen.dsl.shawnyan 配置文件,定义查询
GET loadtest/_search
{"query": {"term": {"id.keyword": {"value": $[[id]]}}}}
  1. 执行压测,-d 表示秒数,-c 表示并发数。
$ ES_ENDPOINT=https://localhost:9200 ES_USERNAME=admin ES_PASSWORD=xxx ./loadgen-linux-amd64 -run loadgen.dsl.shawnyan -d 10 -c 2
   __   ___  _      ___  ___   __    __
  / /  /___\/_\    /   \/ _ \ /__\/\ \ \
 / /  //  ///_\\  / /\ / /_\//_\ /  \/ /
/ /__/ \_//  _  \/ /_// /_\\//__/ /\  /
\____|___/\_/ \_/___,'\____/\__/\_\ \/

[LOADGEN] A http load generator and testing suite.
[LOADGEN] 1.26.1#598, 2024-08-14 04:50:03, 2024-12-31 10:10:10, 00f15fd86834d7ea539f6d66ee608e3915eef0e3
[08-19 16:43:27] [INF] [env.go:179] configuration auto reload enabled
[08-19 16:43:27] [INF] [app.go:285] initializing loadgen, pid: 30792
[08-19 16:43:27] [INF] [app.go:286] using config: /data/es/loadgen.yml
[08-19 16:43:27] [INF] [module.go:155] started plugin: statsd
[08-19 16:43:27] [INF] [module.go:161] all modules are started
[08-19 16:43:27] [INF] [instance.go:78] workspace: /data/es/data/loadgen/nodes/cr1gabqr90cng685o2s0
[08-19 16:43:27] [INF] [app.go:511] loadgen is up and running now.
[08-19 16:43:27] [INF] [main.go:403] loading config: /data/es/loadgen.dsl.shawnyan

21108 requests finished in 9.79061677s, 1.08MB sent, 3.22MB received

[Loadgen Client Metrics]
Requests/sec:           2110.63
Request Traffic/sec:    110.22KB
Total Transfer/sec:     440.00KB
Fastest Request:        680.198µs
Slowest Request:        12.409574ms
Status 200:             21108

[Latency Metrics]
10000 samples of 21108 events
Cumulative:     8.732205871s
HMean:          851.869µs
Avg.:           873.22µs
p50:            839.498µs
p75:            914.298µs
p95:            1.059197ms
p99:            1.327098ms
p999:           4.83579ms
Long 5%:        1.394411ms
Short 5%:       724.226µs
Max:            11.618475ms
Min:            680.198µs
Range:          10.938277ms
StdDev:         289.216µs
Rate/sec.:      2110.63

[Latency Distribution]
       680µs - 1.774ms ------------------------------
     1.774ms - 2.867ms -
     2.867ms - 3.961ms -
     3.961ms - 5.055ms -
     5.055ms - 6.149ms -
     6.149ms - 7.243ms -
     7.243ms - 8.336ms -
      8.336ms - 9.43ms -
     9.43ms - 10.524ms -
   10.524ms - 11.618ms -

[Estimated Server Metrics]
Requests/sec:           2155.94
Avg Req Time:           927.668µs
Transfer/sec:           449.45KB

更多内容请参阅文档:

https://infinilabs.cn/docs/latest/gateway/getting-started/benchmark/

Rally

如果对 Elasticsearch 熟悉的同学,也可尝试使用 Rally 对 Easysearch 进行测试。

Rally 是 Elasticsearch 的基准测试框架。它可以帮助您完成以下任务:

  • 安装 Elasticsearch 集群以进行基准测试
  • 跨 Elasticsearch 版本管理基准数据和规范
  • 运行基准测试并记录结果
  • 通过连接遥测设备来查找性能问题
  • 比较性能结果

安装 Rally。

[root@easysearch /]# pip3 install esrally
Requirement already satisfied: esrally in /usr/local/lib/python3.9/site-packages (2.11.0)
Requirement already satisfied: py-cpuinfo==7.0.0 in /usr/local/lib/python3.9/site-packages (from esrally) (7.0.0)
Requirement already satisfied: elastic-transport==8.4.1 in /usr/local/lib/python3.9/site-packages (from esrally) (8.4.1)
Requirement already satisfied: google-resumable-media[requests]==1.1.0 in /usr/local/lib/python3.9/site-packages (from esrally) (1.1.0)
Requirement already satisfied: urllib3==1.26.18 in /usr/local/lib/python3.9/site-packages (from esrally) (1.26.18)
Requirement already satisfied: google-auth==1.22.1 in /usr/local/lib/python3.9/site-packages (from esrally) (1.22.1)
Requirement already satisfied: thespian==3.10.1 in /usr/local/lib/python3.9/site-packages (from esrally) (3.10.1)
Requirement already satisfied: jsonschema==3.1.1 in /usr/local/lib/python3.9/site-packages (from esrally) (3.1.1)
Requirement already satisfied: markupsafe==2.0.1 in /usr/local/lib64/python3.9/site-packages (from esrally) (2.0.1)
Requirement already satisfied: yappi==1.5.1 in /usr/local/lib64/python3.9/site-packages (from esrally) (1.5.1)
Requirement already satisfied: psutil==5.9.4 in /usr/local/lib64/python3.9/site-packages (from esrally) (5.9.4)
Requirement already satisfied: certifi in /usr/local/lib/python3.9/site-packages (from esrally) (2024.7.4)
Requirement already satisfied: elasticsearch[async]==8.6.1 in /usr/local/lib/python3.9/site-packages (from esrally) (8.6.1)
Requirement already satisfied: ijson==2.6.1 in /usr/local/lib/python3.9/site-packages (from esrally) (2.6.1)
Requirement already satisfied: jinja2==3.1.4 in /usr/local/lib/python3.9/site-packages (from esrally) (3.1.4)
Requirement already satisfied: requests<2.32.0 in /usr/local/lib/python3.9/site-packages (from esrally) (2.31.0)
Requirement already satisfied: tabulate==0.8.9 in /usr/local/lib/python3.9/site-packages (from esrally) (0.8.9)
Requirement already satisfied: zstandard==0.21.0 in /usr/local/lib64/python3.9/site-packages (from esrally) (0.21.0)
Requirement already satisfied: docker==6.0.0 in /usr/local/lib/python3.9/site-packages (from esrally) (6.0.0)
Requirement already satisfied: websocket-client>=0.32.0 in /usr/local/lib/python3.9/site-packages (from docker==6.0.0->esrally) (1.8.0)
Requirement already satisfied: packaging>=14.0 in /usr/lib/python3.9/site-packages (from docker==6.0.0->esrally) (20.9)
Requirement already satisfied: aiohttp<4,>=3 in /usr/local/lib64/python3.9/site-packages (from elasticsearch[async]==8.6.1->esrally) (3.10.4)
Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (0.4.0)
Requirement already satisfied: six>=1.9.0 in /usr/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (1.15.0)
Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (4.9)
Requirement already satisfied: setuptools>=40.3.0 in /usr/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (53.0.0)
Requirement already satisfied: cachetools<5.0,>=2.0.0 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (4.2.4)
Requirement already satisfied: google-crc32c<2.0dev,>=1.0 in /usr/local/lib64/python3.9/site-packages (from google-resumable-media[requests]==1.1.0->esrally) (1.5.0)
Requirement already satisfied: attrs>=17.4.0 in /usr/local/lib/python3.9/site-packages (from jsonschema==3.1.1->esrally) (24.2.0)
Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.9/site-packages (from jsonschema==3.1.1->esrally) (8.2.0)
Requirement already satisfied: pyrsistent>=0.14.0 in /usr/local/lib64/python3.9/site-packages (from jsonschema==3.1.1->esrally) (0.20.0)
Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.9.4)
Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.4.1)
Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.3.1)
Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (4.0.3)
Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (2.3.7)
Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (6.0.5)
Requirement already satisfied: pyparsing>=2.0.2 in /usr/lib/python3.9/site-packages (from packaging>=14.0->docker==6.0.0->esrally) (2.4.7)
Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /usr/local/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth==1.22.1->esrally) (0.6.0)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/site-packages (from requests<2.32.0->esrally) (3.7)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib64/python3.9/site-packages (from requests<2.32.0->esrally) (3.3.2)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.9/site-packages (from importlib-metadata->jsonschema==3.1.1->esrally) (3.20.0)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[root@easysearch /]# esrally --version
esrally 2.11.0
[root@easysearch /]#

关于 Rally 的更多内容,请参阅官方文档:

https://esrally.readthedocs.io/en/stable/

作者:少安事务所
原文:https://mp.weixin.qq.com/s/9eEH38kgsw4i150CJqyxvQ

收起阅读 »

【搜索客社区日报】第1886期 (2024-08-23)

1、OpenSearch:引入的一种高效语义检索方法——神经稀疏两阶段算法
https://opensearch.org/blog/In ... ithm/

2、Elasticsearch 8 RAG 技术分享
https://mp.weixin.qq.com/s/-0vYPmMS2xZUcKkaq5TaQA

3、腾讯云Elasticsearch 优化Lucene性能:高性能缓存的读写锁解决方案
https://mp.weixin.qq.com/s/g-JPECyz3wP6A69Sj-EVVw

4、Easysearch 性能测试方法概要
https://mp.weixin.qq.com/s/9eEH38kgsw4i150CJqyxvQ

编辑:Fred 
更多资讯:http://news.searchkit.cn
继续阅读 »
1、OpenSearch:引入的一种高效语义检索方法——神经稀疏两阶段算法
https://opensearch.org/blog/In ... ithm/

2、Elasticsearch 8 RAG 技术分享
https://mp.weixin.qq.com/s/-0vYPmMS2xZUcKkaq5TaQA

3、腾讯云Elasticsearch 优化Lucene性能:高性能缓存的读写锁解决方案
https://mp.weixin.qq.com/s/g-JPECyz3wP6A69Sj-EVVw

4、Easysearch 性能测试方法概要
https://mp.weixin.qq.com/s/9eEH38kgsw4i150CJqyxvQ

编辑:Fred 
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第1885期 (2024-08-21)

1.高级RAG技术第1部分:数据处理
https://cloud.tencent.com/deve ... 46232
2.LangChain 与 Elastic 合作,加入向量数据库和语义重排序功能以增强 RAG原创
https://cloud.tencent.com/deve ... 43581
3.RAG:如何与您的数据对话
https://cloud.tencent.com/deve ... 79569


编辑:kin122 
更多资讯:http://news.searchkit.cn
继续阅读 »
1.高级RAG技术第1部分:数据处理
https://cloud.tencent.com/deve ... 46232
2.LangChain 与 Elastic 合作,加入向量数据库和语义重排序功能以增强 RAG原创
https://cloud.tencent.com/deve ... 43581
3.RAG:如何与您的数据对话
https://cloud.tencent.com/deve ... 79569


编辑:kin122 
更多资讯:http://news.searchkit.cn 收起阅读 »

【第3期】2024 搜索客 Meetup | Elasticsearch 的代码结构和写入查询流程的解读 - 下篇

本次活动由 搜索客社区、极限科技(INFINI Labs)联合举办,活动主题将深入探讨 Elasticsearch 的两个核心方面:代码结构以及写入和查询的关键流程。本次活动将为 Elasticsearch 初学者和有经验的用户提供宝贵的见解,欢迎大家报名参加、交流学习。

活动主题:Elasticsearch 的代码结构和写入查询流程的解读 - 下篇
活动时间:2024 年 8 月 28 日 19:00-20:00(周三)
活动形式:微信视频号(极限实验室)直播
报名方式:关注或扫码海报中的二维码进行预约

嘉宾介绍

张磊,极限科技搜索引擎研发负责人,对 Elasticsearch 和 Lucene 源码比较熟悉,目前主要负责公司的 Easysearch 产品的研发以及客户服务工作。

主题摘要

本次分享将探讨 Elasticsearch 的代码结构及其写入和查询流程。内容包括:项目架构、核心模块、插件系统,以及文档索引和查询的各个阶段与分布式查询协调。

活动亮点

  1. 深入解析 Elasticsearch 代码结构

    • 项目的整体结构:了解 Elasticsearch 项目的组织方式。
    • 核心模块及其职责:学习 Elasticsearch 的核心模块及其在系统中的具体角色。
    • 插件系统的设计:探索 Elasticsearch 灵活的插件系统设计及其扩展方式。
  2. 详细解读 Elasticsearch 写入和查询流程

    • 文档索引过程的各个阶段:跟随文档从初始接收至最终存储的索引过程。
    • 查询解析和执行的步骤:理解 Elasticsearch 中查询解析和执行的各个步骤。
    • 分布式查询的协调过程:学习 Elasticsearch 如何在分布式架构中协调查询,以提供高效且准确的搜索结果。

参与有奖

直播中将设有福袋抽奖环节,参与就有机会获得 INFINI Labs 周边纪念品,包括 T 恤、鸭舌帽、咖啡杯、指甲刀套件等等(图片仅供参考,款式、颜色与尺码随机)。

活动交流

本活动设有 Meetup 技术交流群,可添加小助手微信入群。

本次 Meetup 是深入了解 Elasticsearch 内部工作机制、提升使用技能的绝佳机会。不要错过!

Meetup 讲师招募

搜索客社区 Meetup 的成功举办,离不开社区小伙伴的热情参与。目前社区讲师招募计划也在持续进行中,我们诚挚邀请各位技术大咖、行业精英踊跃提交演讲议题,与大家分享您的经验。

讲师报名链接:http://cfp.searchkit.cn
或扫描下方二维码,立刻报名成为讲师!

Meetup 活动聚焦 AI 与搜索领域的最新动态,以及数据实时搜索分析、向量检索、技术实践与案例分析、日志分析、安全等领域的深度探讨。

我们热切期待您的精彩分享!

往期回顾

关于 搜索客(SearchKit)社区

搜索客社区由 Elasticsearch 中文社区进行全新的品牌升级,以新的 Slogan:“搜索人自己的社区” 为宣言。汇集搜索领域最新动态、精选干货文章、精华讨论、文档资料、翻译与版本发布等,为广大搜索领域从业者提供更为丰富便捷的学习和交流平台。

社区官网:https://searchkit.cn

继续阅读 »

本次活动由 搜索客社区、极限科技(INFINI Labs)联合举办,活动主题将深入探讨 Elasticsearch 的两个核心方面:代码结构以及写入和查询的关键流程。本次活动将为 Elasticsearch 初学者和有经验的用户提供宝贵的见解,欢迎大家报名参加、交流学习。

活动主题:Elasticsearch 的代码结构和写入查询流程的解读 - 下篇
活动时间:2024 年 8 月 28 日 19:00-20:00(周三)
活动形式:微信视频号(极限实验室)直播
报名方式:关注或扫码海报中的二维码进行预约

嘉宾介绍

张磊,极限科技搜索引擎研发负责人,对 Elasticsearch 和 Lucene 源码比较熟悉,目前主要负责公司的 Easysearch 产品的研发以及客户服务工作。

主题摘要

本次分享将探讨 Elasticsearch 的代码结构及其写入和查询流程。内容包括:项目架构、核心模块、插件系统,以及文档索引和查询的各个阶段与分布式查询协调。

活动亮点

  1. 深入解析 Elasticsearch 代码结构

    • 项目的整体结构:了解 Elasticsearch 项目的组织方式。
    • 核心模块及其职责:学习 Elasticsearch 的核心模块及其在系统中的具体角色。
    • 插件系统的设计:探索 Elasticsearch 灵活的插件系统设计及其扩展方式。
  2. 详细解读 Elasticsearch 写入和查询流程

    • 文档索引过程的各个阶段:跟随文档从初始接收至最终存储的索引过程。
    • 查询解析和执行的步骤:理解 Elasticsearch 中查询解析和执行的各个步骤。
    • 分布式查询的协调过程:学习 Elasticsearch 如何在分布式架构中协调查询,以提供高效且准确的搜索结果。

参与有奖

直播中将设有福袋抽奖环节,参与就有机会获得 INFINI Labs 周边纪念品,包括 T 恤、鸭舌帽、咖啡杯、指甲刀套件等等(图片仅供参考,款式、颜色与尺码随机)。

活动交流

本活动设有 Meetup 技术交流群,可添加小助手微信入群。

本次 Meetup 是深入了解 Elasticsearch 内部工作机制、提升使用技能的绝佳机会。不要错过!

Meetup 讲师招募

搜索客社区 Meetup 的成功举办,离不开社区小伙伴的热情参与。目前社区讲师招募计划也在持续进行中,我们诚挚邀请各位技术大咖、行业精英踊跃提交演讲议题,与大家分享您的经验。

讲师报名链接:http://cfp.searchkit.cn
或扫描下方二维码,立刻报名成为讲师!

Meetup 活动聚焦 AI 与搜索领域的最新动态,以及数据实时搜索分析、向量检索、技术实践与案例分析、日志分析、安全等领域的深度探讨。

我们热切期待您的精彩分享!

往期回顾

关于 搜索客(SearchKit)社区

搜索客社区由 Elasticsearch 中文社区进行全新的品牌升级,以新的 Slogan:“搜索人自己的社区” 为宣言。汇集搜索领域最新动态、精选干货文章、精华讨论、文档资料、翻译与版本发布等,为广大搜索领域从业者提供更为丰富便捷的学习和交流平台。

社区官网:https://searchkit.cn

收起阅读 »

Easysearch x 《黑神话悟空》有奖征文获奖结果公示

随着《黑神话:悟空》游戏的正式发售,我们 INFINI Labs 组织的 Easysearch 有奖征文大赛也圆满落幕。本次征文活动自启动以来,收到了众多创作者的热情投稿。在此,我们衷心感谢每一位参与活动的作者,是你们的才华和热情让这次征文活动异彩纷呈。

经过专业评审团的认真评选,最终确定了以下获奖作品及作者,现予以公布:

奖项 作者 作品 奖品
一等奖 AWS 加油站 玩转 Easysearch 语法 《黑神话:悟空》数字豪华版一套
二等奖 杨帆 使用 Easysearch 打造企业内部知识问答系统 《黑神话:悟空》数字标准版一套
二等奖 李家兴 从 Elasticsearch 到 Easysearch:国产搜索型数据库的崛起与未来展望 《黑神话:悟空》数字标准版一套
三等奖 严少安 Easysearch,地表最强,没有之一! INFINI Labs 咖啡杯 / 指甲剪套装
三等奖 张磊 Easysearch 新特性:写入限流功能介绍 INFINI Labs 咖啡杯 / 指甲剪套装
三等奖 keep 如何在 MacOS 环境下快速安装部署 Easysearch INFINI Labs 咖啡杯 / 指甲剪套装

恭喜以上获奖作者,你们的作品不仅展现了 Easysearch 的强大功能,也为社区成员提供了宝贵的学习资源。我们将会通过小助手微信联系各位获奖者,安排奖品的发放。

同时,我们也要感谢所有参与本次征文活动的作者,你们的每一篇 Easysearch 投稿都是对社区的一份贡献。我们期待在未来的活动中再次与大家相遇。

请继续关注 INFINI Labs,我们将持续为大家带来更多优质的产品和精彩的活动。再次感谢大家的参与和支持!

如有疑问或想加入 Easysearch 用户交流群请联系我们小助手!

小助手微信

附征文活动原文:

天命人, 你在吗?快拿走你的《黑神话:悟空》游戏,去开启神话冒险!

关于极限科技(INFINI Labs)

INFINI Labs

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。

官网:https://infinilabs.cn

继续阅读 »

随着《黑神话:悟空》游戏的正式发售,我们 INFINI Labs 组织的 Easysearch 有奖征文大赛也圆满落幕。本次征文活动自启动以来,收到了众多创作者的热情投稿。在此,我们衷心感谢每一位参与活动的作者,是你们的才华和热情让这次征文活动异彩纷呈。

经过专业评审团的认真评选,最终确定了以下获奖作品及作者,现予以公布:

奖项 作者 作品 奖品
一等奖 AWS 加油站 玩转 Easysearch 语法 《黑神话:悟空》数字豪华版一套
二等奖 杨帆 使用 Easysearch 打造企业内部知识问答系统 《黑神话:悟空》数字标准版一套
二等奖 李家兴 从 Elasticsearch 到 Easysearch:国产搜索型数据库的崛起与未来展望 《黑神话:悟空》数字标准版一套
三等奖 严少安 Easysearch,地表最强,没有之一! INFINI Labs 咖啡杯 / 指甲剪套装
三等奖 张磊 Easysearch 新特性:写入限流功能介绍 INFINI Labs 咖啡杯 / 指甲剪套装
三等奖 keep 如何在 MacOS 环境下快速安装部署 Easysearch INFINI Labs 咖啡杯 / 指甲剪套装

恭喜以上获奖作者,你们的作品不仅展现了 Easysearch 的强大功能,也为社区成员提供了宝贵的学习资源。我们将会通过小助手微信联系各位获奖者,安排奖品的发放。

同时,我们也要感谢所有参与本次征文活动的作者,你们的每一篇 Easysearch 投稿都是对社区的一份贡献。我们期待在未来的活动中再次与大家相遇。

请继续关注 INFINI Labs,我们将持续为大家带来更多优质的产品和精彩的活动。再次感谢大家的参与和支持!

如有疑问或想加入 Easysearch 用户交流群请联系我们小助手!

小助手微信

附征文活动原文:

天命人, 你在吗?快拿走你的《黑神话:悟空》游戏,去开启神话冒险!

关于极限科技(INFINI Labs)

INFINI Labs

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。

官网:https://infinilabs.cn

收起阅读 »

【搜索客社区日报】第1884期 (2024-08-20)

1. Opentelemetry 和 Elasticsearch 的碰撞能迸发什么神奇的东西?(需要梯子)
https://medium.com/%40rahul.fi ... 65ef8
2. 用terraform来管理grafana的告警(需要梯子)
https://medium.com/%40wadexu00 ... 36839
3. 用curator实现es的自动索引管理(需要梯子)
https://medium.com/%40parikshi ... a00c7

编辑:斯蒂文
更多资讯:http://news.searchkit.cn
 
继续阅读 »
1. Opentelemetry 和 Elasticsearch 的碰撞能迸发什么神奇的东西?(需要梯子)
https://medium.com/%40rahul.fi ... 65ef8
2. 用terraform来管理grafana的告警(需要梯子)
https://medium.com/%40wadexu00 ... 36839
3. 用curator实现es的自动索引管理(需要梯子)
https://medium.com/%40parikshi ... a00c7

编辑:斯蒂文
更多资讯:http://news.searchkit.cn
  收起阅读 »

活动回顾 - 第2期 搜索客 Meetup 线上直播活动圆满结束,附 PPT 下载

2024 年 8 月 14 日,由搜索客社区和极限科技(INFINI Labs)联合举办的第 2 期线上 Meetup 技术交流直播活动圆满结束。本期 Meetup 直播活动吸引了超过 500+ 人次的技术爱好者参与,共同学习和交流了 Elasticsearch 源码结构、写入流程、插件开发、性能优化等。

PPT封面.png

主题:Elasticsearch 的代码结构和写入查询流程的解读

本期 Meetup 活动由极限科技搜索引擎研发负责人 张磊老师 为大家带来了主题为《Elasticsearch 的代码结构和写入查询流程的解读》精彩分享。

PPT首页.jpg

张磊老师首先对 ES 项目架构、核心模块、插件系统进行分析和解读,然后深入讲解了 ES 的写入流程,同时结合 ES 源代码进行 Demo 演示。以下为摘取 PPT 部分内容截图:

PPT-项目结构.jpg
PPT-写入流程.jpg

直播间的小伙伴对分享内容非常感兴趣,纷纷在评论区留言提问,下面摘取部分提问:

  • 如何学习 ES 源码?
  • 开发 ES 插件有什么需要注意的地方吗
  • bulk 请求有没有请求大小或者文档数的优化参数?
  • bulk 写入数据时,单次写入的条数一般限制到多少?
  • 在大数据请求时,一直内存熔断,内存已经给到了 32GB,怎么排查是哪里的问题?
  • es8.x 的 knn 和 os 的 knn 有些什么区别?

张磊老师从专业的角度热情耐心的一一进行了解答,获得了大家的点赞好评。

同时,在整个直播过程中,主持人进行了多轮激动人心的抽奖活动,为参会小伙伴带来了额外的惊喜,将活动气氛推向了高潮。

本期 Meetup 旨在为 ES 初学者和有经验的用户提供深入见解,随着活动的圆满结束,参会小伙伴们不仅收获和提升在 ES 使用和开发方面的能力,还共同推动了技术的进步和社区的发展。

最后感谢大家的参与和支持,让我们共同期待下一次 搜索客 Meetup 活动带来更多的精彩内容!

本期 Meetup 的 PPT 下载

本期 PPT 下载的链接:https://searchkit.cn/slides/326

本期 Meetup 视频回放

扫码关注极限实验室视频号查看直播回放,或者扫码关注极限实验室 B 站 账号,可查看本期 Meetup 活动视频。我们也会在视频号、B 站持续更新最新技术视频,欢迎通过点赞、投币,收藏,三连来支持我们。

Meetup 活动讲师招募

讲师招募

搜索客社区 Meetup 的成功举办,离不开社区小伙伴的热情参与。目前社区讲师招募计划也在持续进行中,我们诚挚邀请各位技术大咖、行业精英踊跃提交演讲议题,与大家分享您的经验。

讲师报名链接:http://cfp.searchkit.cn
或扫描下方二维码,立刻报名成为讲师!

Meetup 活动聚焦 AI 与搜索领域的最新动态,以及数据实时搜索分析、向量检索、技术实践与案例分析、日志分析、安全等领域的深度探讨。

我们热切期待您的精彩分享!

关于 搜索客(SearchKit)社区

搜索客社区由 Elasticsearch 中文社区进行全新的品牌升级,以新的 Slogan:“搜索人自己的社区” 为宣言。汇集搜索领域最新动态、精选干货文章、精华讨论、文档资料、翻译与版本发布等,为广大搜索领域从业者提供更为丰富便捷的学习和交流平台。社区官网:https://searchkit.cn

关于极限科技(INFINI Labs)

INFINI Labs

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。

官网:https://infinilabs.cn

继续阅读 »

2024 年 8 月 14 日,由搜索客社区和极限科技(INFINI Labs)联合举办的第 2 期线上 Meetup 技术交流直播活动圆满结束。本期 Meetup 直播活动吸引了超过 500+ 人次的技术爱好者参与,共同学习和交流了 Elasticsearch 源码结构、写入流程、插件开发、性能优化等。

PPT封面.png

主题:Elasticsearch 的代码结构和写入查询流程的解读

本期 Meetup 活动由极限科技搜索引擎研发负责人 张磊老师 为大家带来了主题为《Elasticsearch 的代码结构和写入查询流程的解读》精彩分享。

PPT首页.jpg

张磊老师首先对 ES 项目架构、核心模块、插件系统进行分析和解读,然后深入讲解了 ES 的写入流程,同时结合 ES 源代码进行 Demo 演示。以下为摘取 PPT 部分内容截图:

PPT-项目结构.jpg
PPT-写入流程.jpg

直播间的小伙伴对分享内容非常感兴趣,纷纷在评论区留言提问,下面摘取部分提问:

  • 如何学习 ES 源码?
  • 开发 ES 插件有什么需要注意的地方吗
  • bulk 请求有没有请求大小或者文档数的优化参数?
  • bulk 写入数据时,单次写入的条数一般限制到多少?
  • 在大数据请求时,一直内存熔断,内存已经给到了 32GB,怎么排查是哪里的问题?
  • es8.x 的 knn 和 os 的 knn 有些什么区别?

张磊老师从专业的角度热情耐心的一一进行了解答,获得了大家的点赞好评。

同时,在整个直播过程中,主持人进行了多轮激动人心的抽奖活动,为参会小伙伴带来了额外的惊喜,将活动气氛推向了高潮。

本期 Meetup 旨在为 ES 初学者和有经验的用户提供深入见解,随着活动的圆满结束,参会小伙伴们不仅收获和提升在 ES 使用和开发方面的能力,还共同推动了技术的进步和社区的发展。

最后感谢大家的参与和支持,让我们共同期待下一次 搜索客 Meetup 活动带来更多的精彩内容!

本期 Meetup 的 PPT 下载

本期 PPT 下载的链接:https://searchkit.cn/slides/326

本期 Meetup 视频回放

扫码关注极限实验室视频号查看直播回放,或者扫码关注极限实验室 B 站 账号,可查看本期 Meetup 活动视频。我们也会在视频号、B 站持续更新最新技术视频,欢迎通过点赞、投币,收藏,三连来支持我们。

Meetup 活动讲师招募

讲师招募

搜索客社区 Meetup 的成功举办,离不开社区小伙伴的热情参与。目前社区讲师招募计划也在持续进行中,我们诚挚邀请各位技术大咖、行业精英踊跃提交演讲议题,与大家分享您的经验。

讲师报名链接:http://cfp.searchkit.cn
或扫描下方二维码,立刻报名成为讲师!

Meetup 活动聚焦 AI 与搜索领域的最新动态,以及数据实时搜索分析、向量检索、技术实践与案例分析、日志分析、安全等领域的深度探讨。

我们热切期待您的精彩分享!

关于 搜索客(SearchKit)社区

搜索客社区由 Elasticsearch 中文社区进行全新的品牌升级,以新的 Slogan:“搜索人自己的社区” 为宣言。汇集搜索领域最新动态、精选干货文章、精华讨论、文档资料、翻译与版本发布等,为广大搜索领域从业者提供更为丰富便捷的学习和交流平台。社区官网:https://searchkit.cn

关于极限科技(INFINI Labs)

INFINI Labs

极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。

官网:https://infinilabs.cn

收起阅读 »

如何在 MacOS 环境下快速安装部署 Easysearch

1、什么是 Easysearch

Easysearch 是极限科技研发的一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。 同时也是一款具备自主可控的分布式近实时搜索型数据库产品,具备高性能、高可用、弹性伸缩、高安全性等特性,具备支持丰富的个性化搜索及聚合分析能力,可部署在物理机、虚拟机、容器、私有云和公有云,能承载 PB 级别的海量业务数据,为金融核心系统、运营商、制造业和政企业务系统提供安全、稳定、可靠的快速检索和实时数据探索分析能力,可满足不同业务场景的各项复杂需求。

2、前期准备

在安装 Easysearch 之前,确保您的 MacOS 系统符合以下要求:

  • MacOS 操作系统版本应为最新或推荐稳定版本。
  • 确保系统上已安装 Java 运行环境,因为 Easysearch 是基于 Java 开发的。

3、下载 Easysearch

打开浏览器,访问 Easysearch 官方下载页面

图片10.png

找到 MacOS 版本安装包,然后根据自己电脑 CPU 架构选择对应的 Easysearch 安装包。我自己的电脑是 Intel X86 架构,直接选择默认的 amd64,点击下载即可。如果你的电脑是 Apple 的自己的 M 系列芯片,请选择 arm64 版本安装包。

4、安装 Easysearch

打开终端(Terminal)并导航到下载目录,找到 Easysearch 的压缩包,然后双击解压到您选择的目录。或者使用以下命令解压文件:

unzip ./easysearch-1.8.3-265-mac-amd64.zip

5、启动 Easysearch

  1. 执行初始化脚本

由于 Easysearch 默认自带了安全模块,所以在启动之前需要先执行初始化脚本,脚本里会自动帮我们处理好 Easysearch 安全证书、下载基本的 plugins 插件以及初始用户名和密码等,方便省心。

cd ./easysearch-1.8.3-265-mac-amd64 && bin/initialize.sh

图片11.png

执行过程中遇到 [y/N] 询问,输入 y 即可。最后执行完初始化脚本之后,我们可以在输出的 log 日志中看到 easysearch 的访问用户名和密码,需要注意的是,这个用户名和密码需要自己保存好。 如下图所示:

图片12.png

  1. 启动 Easysearch: 使用以下命令启动 Easysearch:
./bin/easysearch

启动后,Easysearch 将在终端中输出运行日志,您可以在此查看启动过程中的详细信息。

6、验证安装

  1. 检查运行状态

打开浏览器,访问 https://localhost:9200,输入上面提到的用户名密码,如果您看到类似以下的 JSON 响应,说明 Easysearch 已成功启动:

图片13.png

  1. 检查集群健康状况

在浏览器中输入 https:/localhost:9200/_cluster/health?pretty 或者在终端中执行以下命令来检查集群的健康状况:

curl -ku admin:4395c2f67208ca5ad7de https://localhost:9200/_cluster/health?pretty"

这将返回集群的详细健康信息,status 为 green 表示集群状态正常。如下图所示:

图片14.png

7、总结

通过上述步骤,可以轻松地在 MacOS 环境下安装和部署 Easysearch,享受它带来的强大功能和便捷体验。Easysearch 作为 Elasticsearch 的替代产品,不仅在功能上保持了高效和稳定,还进一步优化了搜索业务场景,使其更适合企业级应用。现在,您可以进一步配置集群,开始索引数据,并探索 Easysearch 提供的强大搜索和分析功能。建议参考 官网文档,深入了解并实践更多高级功能。

关于 Easysearch 有奖征文活动

黑神话悟空

无论你是 Easysearch 的老用户,还是第一次听说这个名字,只要你对 INFINI Labs 旗下的 Easysearch 产品感兴趣,或者是希望了解 Easysearch,都可以参加这次活动。

详情查看:Easysearch 征文活动

作者:Keep simple
原文:https://blog.csdn.net/weixin_48688147/article/details/141238374

继续阅读 »

1、什么是 Easysearch

Easysearch 是极限科技研发的一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。 同时也是一款具备自主可控的分布式近实时搜索型数据库产品,具备高性能、高可用、弹性伸缩、高安全性等特性,具备支持丰富的个性化搜索及聚合分析能力,可部署在物理机、虚拟机、容器、私有云和公有云,能承载 PB 级别的海量业务数据,为金融核心系统、运营商、制造业和政企业务系统提供安全、稳定、可靠的快速检索和实时数据探索分析能力,可满足不同业务场景的各项复杂需求。

2、前期准备

在安装 Easysearch 之前,确保您的 MacOS 系统符合以下要求:

  • MacOS 操作系统版本应为最新或推荐稳定版本。
  • 确保系统上已安装 Java 运行环境,因为 Easysearch 是基于 Java 开发的。

3、下载 Easysearch

打开浏览器,访问 Easysearch 官方下载页面

图片10.png

找到 MacOS 版本安装包,然后根据自己电脑 CPU 架构选择对应的 Easysearch 安装包。我自己的电脑是 Intel X86 架构,直接选择默认的 amd64,点击下载即可。如果你的电脑是 Apple 的自己的 M 系列芯片,请选择 arm64 版本安装包。

4、安装 Easysearch

打开终端(Terminal)并导航到下载目录,找到 Easysearch 的压缩包,然后双击解压到您选择的目录。或者使用以下命令解压文件:

unzip ./easysearch-1.8.3-265-mac-amd64.zip

5、启动 Easysearch

  1. 执行初始化脚本

由于 Easysearch 默认自带了安全模块,所以在启动之前需要先执行初始化脚本,脚本里会自动帮我们处理好 Easysearch 安全证书、下载基本的 plugins 插件以及初始用户名和密码等,方便省心。

cd ./easysearch-1.8.3-265-mac-amd64 && bin/initialize.sh

图片11.png

执行过程中遇到 [y/N] 询问,输入 y 即可。最后执行完初始化脚本之后,我们可以在输出的 log 日志中看到 easysearch 的访问用户名和密码,需要注意的是,这个用户名和密码需要自己保存好。 如下图所示:

图片12.png

  1. 启动 Easysearch: 使用以下命令启动 Easysearch:
./bin/easysearch

启动后,Easysearch 将在终端中输出运行日志,您可以在此查看启动过程中的详细信息。

6、验证安装

  1. 检查运行状态

打开浏览器,访问 https://localhost:9200,输入上面提到的用户名密码,如果您看到类似以下的 JSON 响应,说明 Easysearch 已成功启动:

图片13.png

  1. 检查集群健康状况

在浏览器中输入 https:/localhost:9200/_cluster/health?pretty 或者在终端中执行以下命令来检查集群的健康状况:

curl -ku admin:4395c2f67208ca5ad7de https://localhost:9200/_cluster/health?pretty"

这将返回集群的详细健康信息,status 为 green 表示集群状态正常。如下图所示:

图片14.png

7、总结

通过上述步骤,可以轻松地在 MacOS 环境下安装和部署 Easysearch,享受它带来的强大功能和便捷体验。Easysearch 作为 Elasticsearch 的替代产品,不仅在功能上保持了高效和稳定,还进一步优化了搜索业务场景,使其更适合企业级应用。现在,您可以进一步配置集群,开始索引数据,并探索 Easysearch 提供的强大搜索和分析功能。建议参考 官网文档,深入了解并实践更多高级功能。

关于 Easysearch 有奖征文活动

黑神话悟空

无论你是 Easysearch 的老用户,还是第一次听说这个名字,只要你对 INFINI Labs 旗下的 Easysearch 产品感兴趣,或者是希望了解 Easysearch,都可以参加这次活动。

详情查看:Easysearch 征文活动

作者:Keep simple
原文:https://blog.csdn.net/weixin_48688147/article/details/141238374

收起阅读 »

【搜索客社区日报】第1883期 (2024-08-16)

1、GenAI时代的实时数据分析:Apache Pinot与向量索引技术探秘
https://mp.weixin.qq.com/s/hyG-xrZrdft77hA2adMY2g

2、B站搜索建库架构优化实践
https://mp.weixin.qq.com/s/Kd9hqXkTsP5Zu8dnFQfDwA

3、使用极限网关实现 ES 跨集群搜索
https://infinilabs.cn/blog/202 ... arch/

4、使用 AWS EKS 部署 Easysearch
https://blog.csdn.net/weixin_3 ... 18050

编辑:Fred 
更多资讯:http://news.searchkit.cn
继续阅读 »
1、GenAI时代的实时数据分析:Apache Pinot与向量索引技术探秘
https://mp.weixin.qq.com/s/hyG-xrZrdft77hA2adMY2g

2、B站搜索建库架构优化实践
https://mp.weixin.qq.com/s/Kd9hqXkTsP5Zu8dnFQfDwA

3、使用极限网关实现 ES 跨集群搜索
https://infinilabs.cn/blog/202 ... arch/

4、使用 AWS EKS 部署 Easysearch
https://blog.csdn.net/weixin_3 ... 18050

编辑:Fred 
更多资讯:http://news.searchkit.cn 收起阅读 »

使用 AWS EKS 部署 Easysearch

随着企业对数据搜索和分析需求的增加,高效的搜索引擎解决方案变得越来越重要。Easysearch 作为一款强大的企业级搜索引擎,可以帮助企业快速构建高性能、可扩展的数据检索系统。在云计算的背景下,使用容器化技术来部署和管理这些解决方案已经成为主流选择,而 Amazon Elastic Kubernetes Service (EKS) 则提供了一个强大且易于使用的平台来运行容器化的应用程序。

本文旨在探索如何在 AWS EKS 上部署 Easysearch,并通过实践操作展示从集群配置到服务部署的完整过程。通过本文,读者可以了解如何在云环境中快速搭建高效的搜索服务,最大化利用云资源的弹性和可扩展性。

准备工作

  1. 准备一个 AWS Global 账户,本文选择东京区域(ap-northeast-1)进行部署。
  2. 部署 EKS 集群版本为 1.30,同时需要在 Linux 环境中安装 AWS CLI、Helm、eksctl 和 kubectl 等命令行工具。本文使用 eksctl 管理 EKS 集群,eksctl 是 AWS 官方推出的高效管理 EKS 集群的命令行工具。
  3. 本文将使用 EBS-CSI-Driver 作为存储驱动来部署 Easysearch 服务,并通过 AWS LoadBalancer Controller 将 Easysearch Console 服务以 AWS 负载均衡器的方式对外提供服务,连接集群内部的 Easysearch。

命令行工具的安装

安装 AWS CLI:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
./aws/install -i /usr/local/aws-cli -b /usr/local/bin
aws --version

安装 Helm:

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh
chmod 700 get_helm.sh
./get_helm.sh

安装 eksctl:

# 对于 ARM 系统,设置 ARCH 为:`arm64`、`armv6` 或 `armv7`
ARCH=amd64
PLATFORM=$(uname -s)_$ARCH

curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"

# (可选)验证校验和
curl -sL "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check

tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz

sudo mv /tmp/eksctl /usr/local/bin

安装 kubectl:

curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.2/2024-07-12/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH

配置 EKS 集群环境

我们使用 eksctl 创建一个 1.30 版本的集群,这里通过 YAML 模板定义 EKS 集群的 VPC 网络配置,并根据 eksctl 官方文档调整相关字段。将以下模板保存为 my-cluster.yaml 文件:

# 创建一个包含 2 个 m5.2xlarge 实例的节点组
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: LAB-1-30
  region: ap-northeast-1

vpc:
  subnets:
    private:
      ap-northeast-1a: { id: subnet-11223344 }
      ap-northeast-1c: { id: subnet-55667788 }
      ap-northeast-1d: { id: subnet-99001122 }

nodeGroups:
  - name: managed-workers-01
    labels: { role: workers }
    instanceType: m5.2xlarge
    minSize: 2
    maxSize: 4
    desiredCapacity: 3
    privateNetworking: true
    volumeSize: 30

通过以下命令创建集群:

eksctl create cluster -f my-cluster.yaml

集群创建完成后,使用以下命令检查集群是否就绪:

# 更新 kubeconfig 的凭证文件
aws eks update-kubeconfig --name LAB-1-30 --region ap-northeast-1
kubectl get node
[ec2-user@ip-10-0-0-84 ~]$ kubectl get node
NAME                                              STATUS   ROLES    AGE   VERSION
ip-10-0-100-132.ap-northeast-1.compute.internal   Ready    <none>   16m   v1.30.2-eks-1552ad0
ip-10-0-101-148.ap-northeast-1.compute.internal   Ready    <none>   16m   v1.30.2-eks-1552ad0

安装 EBS-CSI-Driver 插件,后续部署时可以指定 StorageClass 来使用亚马逊云的 EBS 块存储服务:

eksctl utils associate-iam-oidc-provider --region=ap-northeast-1 --cluster=LAB-1-30 --approve
eksctl create iamserviceaccount \
        --name ebs-csi-controller-sa \
        --namespace kube-system \
        --cluster LAB-1-30 \
        --region ap-northeast-1 \
        --role-name AmazonEKS_EBS_CSI_DriverRole \
        --role-only \
        --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \
        --approve

eksctl create addon --cluster LAB-1-30 --name aws-ebs-csi-driver --version latest --region ap-northeast-1 \
  --service-account-role-arn arn:aws:iam::112233445566:role/AmazonEKS_EBS_CSI_DriverRole --force

[ec2-user@ip-10-0-0-84 ~]$ kubectl get pod -n kube-system | grep -i ebs
ebs-csi-controller-868598b64f-pwmxq   6/6     Running   0          11m
ebs-csi-controller-868598b64f-qn2lz   6/6     Running   0          11m
ebs-csi-node-fplxg                    3/3     Running   0          11m
ebs-csi-node-v6qwj                    3/3     Running   0          11m

安装 AWS LoadBalancer Controller 组件:

eksctl create iamserviceaccount \
  --cluster=LAB-1-30 \
  --region ap-northeast-1 \
  --namespace=kube-system \
  --name=aws-load-balancer-controller \
  --role-name AmazonEKSLoadBalancerControllerRole_130 \
  --attach-policy-arn=arn:aws:iam::112233445566:policy/AWSLoadBalancerControllerIAMPolicy \
  --approve

helm repo add eks https://aws.github.io/eks-charts
helm repo update eks
wget https://raw.githubusercontent.com/aws/eks-charts/master/stable/aws-load-balancer-controller/crds/crds.yaml
kubectl apply -f crds.yaml

helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
  -n kube-system \
  --set clusterName=LAB-1-30 \
  --set serviceAccount.create=false \
  --set serviceAccount.name=aws-load-balancer-controller  \
  --set region=ap-northeast-1

# 验证安装
kubectl get deployment -n kube-system aws-load-balancer-controller
NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
aws-load-balancer-controller   2/2     2            2           39s

至此,我们已经完成了 EKS 集群的配置。

安装 Easysearch 服务

本文中,将通过 AWS LoadBalancer 部署 Console 服务。首先,通过 Helm 将 Console 相关的模板文件拉取到本地,执行以下命令:

helm pull infinilabs/console
tar -zxvf console-0.2.0.tgz
cd console

目录结构如下:

[ec2-user@ip-10-0-0-84 console]$ tree
.
├── Chart.yaml
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── service.yaml
│   ├── serviceaccount.yaml
│   └── statefulset.yaml
└── values.yaml

我们需要修改 service.yamlvalues.yaml 中的部分配置:

# serivce.yaml
# 参考 AWS Load Balancer Controller 的文档,配置负载均衡器面向公网
metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: instance
    service.beta.kubernetes.io/aws-load-balancer-subnets: subnet-11223344, subnet-55667788, subnet-9911223344

# values.yaml
# 使用 GP2 StorageClass,并指定 Service Type 为 LoadBalancer
service:
  type: LoadBalancer
storageClassName: gp2

使用 Helm 部署 console 服务:

kubectl create ns Easysearch
helm upgrade --install console . -f values.yaml -n Easysearch

# 检查是否创建了 Service 并获取负载均衡器的 DNS 地址
kubectl get svc -n Easysearch
NAME         TYPE           CL

USTER-IP       EXTERNAL-IP                                               PORT(S)             AGE
console      LoadBalancer   172.20.237.237   k8s-xxxx.elb.ap-northeast-1.amazonaws.com                 9000:32190/TCP      6h49m

接下来是创建 Easysearch 单节点集群服务。创建一个新的 values.yaml 文件并定义使用 GP2 类型的 StorageClass,如下:

cd ~
echo 'storageClassName: gp2' > values.yaml
cat << EOF | kubectl apply -n Easysearch -f -
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: Easysearch-ca-issuer
spec:
  selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: Easysearch-ca-certificate
spec:
  commonName: Easysearch-ca-certificate
  duration: 87600h0m0s
  isCA: true
  issuerRef:
    kind: Issuer
    name: Easysearch-ca-issuer
  privateKey:
    algorithm: ECDSA
    size: 256
  renewBefore: 2160h0m0s
  secretName: Easysearch-ca-secret
EOF
helm install Easysearch infinilabs/Easysearch -n Easysearch -f values.yaml

至此,我们已在 AWS EKS 平台上完成了 Easysearch 的部署。可以通过 Kubernetes 中的 Service DNS 地址在 Console 中验证连接到内部的 Easysearch 服务。本文中使用的地址为:Easysearch.Easysearch.svc.cluster.local:9200

也可以在 Easysearch 的 Pod 中使用命令进行连接验证:

kubectl exec -n Easysearch Easysearch-0 -it -- curl -ku 'admin:admin' https://Easysearch.Easysearch.svc.cluster.local:9200
{
  "name" : "Easysearch-0",
  "cluster_name" : "infinilabs",
  "cluster_uuid" : "fq3r_ZaHSFuZDjDtKyJY_w",
  "version" : {
    "distribution" : "Easysearch",
    "number" : "1.6.0",
    "distributor" : "INFINI Labs",
    "build_hash" : "e5d1ff9067b3dd696d52c61fbca1f8daed931fb7",
    "build_date" : "2023-09-22T00:55:32.292580Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.2",
    "minimum_wire_lucene_version" : "7.7.0",
    "minimum_lucene_index_compatibility_version" : "7.7.0"
  },
  "tagline" : "You Know, For Easy Search!"
}

总结

通过本文的实践操作,我们成功地在 AWS EKS 平台上部署了 Easysearch 服务,验证了其在云环境中的高效运行能力。从 EKS 集群的配置、存储和网络资源的准备,到最终的 Easysearch 部署与测试,整个过程展示了如何利用 AWS 提供的工具和服务,快速构建企业级搜索引擎解决方案。

通过这次部署,我们不仅了解了 Easysearch 在 Kubernetes 环境中的部署方法,还深入体验了 AWS EKS 平台的强大功能。未来,随着企业数据量的不断增长,结合云计算的弹性和容器化技术的优势,将会为企业的数据管理和搜索提供更加高效的解决方案。

参考文档

  1. AWS 命令行界面
  2. Helm
  3. eksctl
  4. Helm Chart 部署 Easysearch

关于 Easysearch 有奖征文活动

黑神话悟空

无论你是 Easysearch 的老用户,还是第一次听说这个名字,只要你对 INFINI Labs 旗下的 Easysearch 产品感兴趣,或者是希望了解 Easysearch,都可以参加这次活动。

详情查看:Easysearch 征文活动

作者:韩旭,亚马逊云技术支持,亚马逊云科技技领云博主,目前专注于云计算开发和大数据领域。
原文:https://infinilabs.cn/blog/2024/deploy-easysearch-using-aws-eks/

继续阅读 »

随着企业对数据搜索和分析需求的增加,高效的搜索引擎解决方案变得越来越重要。Easysearch 作为一款强大的企业级搜索引擎,可以帮助企业快速构建高性能、可扩展的数据检索系统。在云计算的背景下,使用容器化技术来部署和管理这些解决方案已经成为主流选择,而 Amazon Elastic Kubernetes Service (EKS) 则提供了一个强大且易于使用的平台来运行容器化的应用程序。

本文旨在探索如何在 AWS EKS 上部署 Easysearch,并通过实践操作展示从集群配置到服务部署的完整过程。通过本文,读者可以了解如何在云环境中快速搭建高效的搜索服务,最大化利用云资源的弹性和可扩展性。

准备工作

  1. 准备一个 AWS Global 账户,本文选择东京区域(ap-northeast-1)进行部署。
  2. 部署 EKS 集群版本为 1.30,同时需要在 Linux 环境中安装 AWS CLI、Helm、eksctl 和 kubectl 等命令行工具。本文使用 eksctl 管理 EKS 集群,eksctl 是 AWS 官方推出的高效管理 EKS 集群的命令行工具。
  3. 本文将使用 EBS-CSI-Driver 作为存储驱动来部署 Easysearch 服务,并通过 AWS LoadBalancer Controller 将 Easysearch Console 服务以 AWS 负载均衡器的方式对外提供服务,连接集群内部的 Easysearch。

命令行工具的安装

安装 AWS CLI:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
./aws/install -i /usr/local/aws-cli -b /usr/local/bin
aws --version

安装 Helm:

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh
chmod 700 get_helm.sh
./get_helm.sh

安装 eksctl:

# 对于 ARM 系统,设置 ARCH 为:`arm64`、`armv6` 或 `armv7`
ARCH=amd64
PLATFORM=$(uname -s)_$ARCH

curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"

# (可选)验证校验和
curl -sL "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check

tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz

sudo mv /tmp/eksctl /usr/local/bin

安装 kubectl:

curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.2/2024-07-12/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH

配置 EKS 集群环境

我们使用 eksctl 创建一个 1.30 版本的集群,这里通过 YAML 模板定义 EKS 集群的 VPC 网络配置,并根据 eksctl 官方文档调整相关字段。将以下模板保存为 my-cluster.yaml 文件:

# 创建一个包含 2 个 m5.2xlarge 实例的节点组
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: LAB-1-30
  region: ap-northeast-1

vpc:
  subnets:
    private:
      ap-northeast-1a: { id: subnet-11223344 }
      ap-northeast-1c: { id: subnet-55667788 }
      ap-northeast-1d: { id: subnet-99001122 }

nodeGroups:
  - name: managed-workers-01
    labels: { role: workers }
    instanceType: m5.2xlarge
    minSize: 2
    maxSize: 4
    desiredCapacity: 3
    privateNetworking: true
    volumeSize: 30

通过以下命令创建集群:

eksctl create cluster -f my-cluster.yaml

集群创建完成后,使用以下命令检查集群是否就绪:

# 更新 kubeconfig 的凭证文件
aws eks update-kubeconfig --name LAB-1-30 --region ap-northeast-1
kubectl get node
[ec2-user@ip-10-0-0-84 ~]$ kubectl get node
NAME                                              STATUS   ROLES    AGE   VERSION
ip-10-0-100-132.ap-northeast-1.compute.internal   Ready    <none>   16m   v1.30.2-eks-1552ad0
ip-10-0-101-148.ap-northeast-1.compute.internal   Ready    <none>   16m   v1.30.2-eks-1552ad0

安装 EBS-CSI-Driver 插件,后续部署时可以指定 StorageClass 来使用亚马逊云的 EBS 块存储服务:

eksctl utils associate-iam-oidc-provider --region=ap-northeast-1 --cluster=LAB-1-30 --approve
eksctl create iamserviceaccount \
        --name ebs-csi-controller-sa \
        --namespace kube-system \
        --cluster LAB-1-30 \
        --region ap-northeast-1 \
        --role-name AmazonEKS_EBS_CSI_DriverRole \
        --role-only \
        --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \
        --approve

eksctl create addon --cluster LAB-1-30 --name aws-ebs-csi-driver --version latest --region ap-northeast-1 \
  --service-account-role-arn arn:aws:iam::112233445566:role/AmazonEKS_EBS_CSI_DriverRole --force

[ec2-user@ip-10-0-0-84 ~]$ kubectl get pod -n kube-system | grep -i ebs
ebs-csi-controller-868598b64f-pwmxq   6/6     Running   0          11m
ebs-csi-controller-868598b64f-qn2lz   6/6     Running   0          11m
ebs-csi-node-fplxg                    3/3     Running   0          11m
ebs-csi-node-v6qwj                    3/3     Running   0          11m

安装 AWS LoadBalancer Controller 组件:

eksctl create iamserviceaccount \
  --cluster=LAB-1-30 \
  --region ap-northeast-1 \
  --namespace=kube-system \
  --name=aws-load-balancer-controller \
  --role-name AmazonEKSLoadBalancerControllerRole_130 \
  --attach-policy-arn=arn:aws:iam::112233445566:policy/AWSLoadBalancerControllerIAMPolicy \
  --approve

helm repo add eks https://aws.github.io/eks-charts
helm repo update eks
wget https://raw.githubusercontent.com/aws/eks-charts/master/stable/aws-load-balancer-controller/crds/crds.yaml
kubectl apply -f crds.yaml

helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
  -n kube-system \
  --set clusterName=LAB-1-30 \
  --set serviceAccount.create=false \
  --set serviceAccount.name=aws-load-balancer-controller  \
  --set region=ap-northeast-1

# 验证安装
kubectl get deployment -n kube-system aws-load-balancer-controller
NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
aws-load-balancer-controller   2/2     2            2           39s

至此,我们已经完成了 EKS 集群的配置。

安装 Easysearch 服务

本文中,将通过 AWS LoadBalancer 部署 Console 服务。首先,通过 Helm 将 Console 相关的模板文件拉取到本地,执行以下命令:

helm pull infinilabs/console
tar -zxvf console-0.2.0.tgz
cd console

目录结构如下:

[ec2-user@ip-10-0-0-84 console]$ tree
.
├── Chart.yaml
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── service.yaml
│   ├── serviceaccount.yaml
│   └── statefulset.yaml
└── values.yaml

我们需要修改 service.yamlvalues.yaml 中的部分配置:

# serivce.yaml
# 参考 AWS Load Balancer Controller 的文档,配置负载均衡器面向公网
metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: instance
    service.beta.kubernetes.io/aws-load-balancer-subnets: subnet-11223344, subnet-55667788, subnet-9911223344

# values.yaml
# 使用 GP2 StorageClass,并指定 Service Type 为 LoadBalancer
service:
  type: LoadBalancer
storageClassName: gp2

使用 Helm 部署 console 服务:

kubectl create ns Easysearch
helm upgrade --install console . -f values.yaml -n Easysearch

# 检查是否创建了 Service 并获取负载均衡器的 DNS 地址
kubectl get svc -n Easysearch
NAME         TYPE           CL

USTER-IP       EXTERNAL-IP                                               PORT(S)             AGE
console      LoadBalancer   172.20.237.237   k8s-xxxx.elb.ap-northeast-1.amazonaws.com                 9000:32190/TCP      6h49m

接下来是创建 Easysearch 单节点集群服务。创建一个新的 values.yaml 文件并定义使用 GP2 类型的 StorageClass,如下:

cd ~
echo 'storageClassName: gp2' > values.yaml
cat << EOF | kubectl apply -n Easysearch -f -
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: Easysearch-ca-issuer
spec:
  selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: Easysearch-ca-certificate
spec:
  commonName: Easysearch-ca-certificate
  duration: 87600h0m0s
  isCA: true
  issuerRef:
    kind: Issuer
    name: Easysearch-ca-issuer
  privateKey:
    algorithm: ECDSA
    size: 256
  renewBefore: 2160h0m0s
  secretName: Easysearch-ca-secret
EOF
helm install Easysearch infinilabs/Easysearch -n Easysearch -f values.yaml

至此,我们已在 AWS EKS 平台上完成了 Easysearch 的部署。可以通过 Kubernetes 中的 Service DNS 地址在 Console 中验证连接到内部的 Easysearch 服务。本文中使用的地址为:Easysearch.Easysearch.svc.cluster.local:9200

也可以在 Easysearch 的 Pod 中使用命令进行连接验证:

kubectl exec -n Easysearch Easysearch-0 -it -- curl -ku 'admin:admin' https://Easysearch.Easysearch.svc.cluster.local:9200
{
  "name" : "Easysearch-0",
  "cluster_name" : "infinilabs",
  "cluster_uuid" : "fq3r_ZaHSFuZDjDtKyJY_w",
  "version" : {
    "distribution" : "Easysearch",
    "number" : "1.6.0",
    "distributor" : "INFINI Labs",
    "build_hash" : "e5d1ff9067b3dd696d52c61fbca1f8daed931fb7",
    "build_date" : "2023-09-22T00:55:32.292580Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.2",
    "minimum_wire_lucene_version" : "7.7.0",
    "minimum_lucene_index_compatibility_version" : "7.7.0"
  },
  "tagline" : "You Know, For Easy Search!"
}

总结

通过本文的实践操作,我们成功地在 AWS EKS 平台上部署了 Easysearch 服务,验证了其在云环境中的高效运行能力。从 EKS 集群的配置、存储和网络资源的准备,到最终的 Easysearch 部署与测试,整个过程展示了如何利用 AWS 提供的工具和服务,快速构建企业级搜索引擎解决方案。

通过这次部署,我们不仅了解了 Easysearch 在 Kubernetes 环境中的部署方法,还深入体验了 AWS EKS 平台的强大功能。未来,随着企业数据量的不断增长,结合云计算的弹性和容器化技术的优势,将会为企业的数据管理和搜索提供更加高效的解决方案。

参考文档

  1. AWS 命令行界面
  2. Helm
  3. eksctl
  4. Helm Chart 部署 Easysearch

关于 Easysearch 有奖征文活动

黑神话悟空

无论你是 Easysearch 的老用户,还是第一次听说这个名字,只要你对 INFINI Labs 旗下的 Easysearch 产品感兴趣,或者是希望了解 Easysearch,都可以参加这次活动。

详情查看:Easysearch 征文活动

作者:韩旭,亚马逊云技术支持,亚马逊云科技技领云博主,目前专注于云计算开发和大数据领域。
原文:https://infinilabs.cn/blog/2024/deploy-easysearch-using-aws-eks/

收起阅读 »

【搜索客社区日报】第1882期 (2024-08-15)

1.通过缓存最大限度地提高生产中的 AI 效率:经济高效的性能助推器(需要梯子)
https://towardsdatascience.com ... 00efd
2.OpenSearch 中语义搜索的 ABC:架构、基准和组合策略
https://opensearch.org/blog/se ... ormer
3.LangFlow: GenAI 领域的 Node-RED(拖拽式低代码应用开发框架)
https://www.bilibili.com/video/BV1YQenetEYe
4.基于 SiliconCloud 使能 GraphRAG
https://www.bilibili.com/video/BV1Chv4eFE5s/?p=15


编辑:Se7en  
更多资讯:http://news.searchkit.cn
继续阅读 »
1.通过缓存最大限度地提高生产中的 AI 效率:经济高效的性能助推器(需要梯子)
https://towardsdatascience.com ... 00efd
2.OpenSearch 中语义搜索的 ABC:架构、基准和组合策略
https://opensearch.org/blog/se ... ormer
3.LangFlow: GenAI 领域的 Node-RED(拖拽式低代码应用开发框架)
https://www.bilibili.com/video/BV1YQenetEYe
4.基于 SiliconCloud 使能 GraphRAG
https://www.bilibili.com/video/BV1Chv4eFE5s/?p=15


编辑:Se7en  
更多资讯:http://news.searchkit.cn 收起阅读 »

【搜索客社区日报】第1881期 (2024-08-14)

1.ES索引原理
https://zhuanlan.zhihu.com/p/706262790

2.95% 向量资源节省,火山引擎云搜索 RAG 技术体系演进
https://mp.weixin.qq.com/s/jNNWFhrRjxDRhNbe5kpmag
 
3.基于火山引擎云搜索服务和豆包模型搭建 RAG 推理任务
https://mp.weixin.qq.com/s/Wwst5Jjm3oYJTve1QnmuNg


编辑:kin122 
更多资讯:http://news.searchkit.cn
继续阅读 »
1.ES索引原理
https://zhuanlan.zhihu.com/p/706262790

2.95% 向量资源节省,火山引擎云搜索 RAG 技术体系演进
https://mp.weixin.qq.com/s/jNNWFhrRjxDRhNbe5kpmag
 
3.基于火山引擎云搜索服务和豆包模型搭建 RAG 推理任务
https://mp.weixin.qq.com/s/Wwst5Jjm3oYJTve1QnmuNg


编辑:kin122 
更多资讯:http://news.searchkit.cn 收起阅读 »