背景
很多小伙伴都在使用 Logstash ,随着各家安全扫描、安全策略的加固,不少小伙伴已经开始使用 Logstash 8 了。在使用 Logstash 8 连接 Easysearch 的时候可能会遇到问题,比如下图。
提示连接的不是兼容版本的 Elasticsearch 。
解决方法有两种
两种方法对 Logstash 和 Logstash-oss 两种版本都适用。
一、用 INFINI Gateway 代理 Easysearch
使用此方法, Logstash 连接的是 INFINI Gateway ,由 INFINI Gateway “通过” Logstash 8 的检查。
优点是对 Easysearch 版本无要求。
默认的网关配置要稍作修改。
- 修改 router.rules 部分
router:- name: my_routerdefault_flow: default_flowtracing_flow: logging_flowrules:- method:- "GET"pattern:- "/"flow:- overwrite_flow- method:- "GET"pattern:- "/_license"flow:- overwrite_license_flow- method:- "*"pattern:- "/_bulk"- "/{any_index}/_bulk"flow:- async_bulk_flow
- flow 下增加 overwrite_flow 和 overwrite_license_flow
- name: overwrite_flowfilter:- elasticsearch:elasticsearch: prodmax_connection_per_node: 1000- set_context:context:_ctx.response.body_json.version.number: '"8.14.3"'_ctx.response.body_json.version.build_flavor: '"default"'_ctx.response.body_json.tagline: '"You Know, for Search"'_ctx.response.body_json.minimum_wire_compatibility_version: '"7.17.0"'_ctx.response.body_json.minimum_index_compatibility_version: '"7.0.0"'- set_response_header:headers:- X-elastic-product -> Elasticsearch- name: overwrite_license_flowfilter:- echo:message: '{"license": "ok"}'- set_context:context:_ctx.response.code: 200_ctx.response.body_json.license.status: '"active"'_ctx.response.body_json.license.type: '"basic"'_ctx.response.body_json.license.issuer: '"elasticsearch"'_ctx.response.body_json.license.issue_date: '"2024-09-12T13:10:55.848Z"'_ctx.response.body_json.license.start_date_in_millis: "-1"- set_response_header:headers:- X-elastic-product -> Elasticsearch
记住 Logstash 要填写 INFINI Gateway 的地址和端口,并关闭自动导入模板功能。
连接成功后,如下图。
二、使用 Easysearch 1.9.0 及以上版本
Easysearch 1.9.0 已经增加了适配 Logstash8.x 的请求 header,因此使用 Easysearch 1.9.0 的小伙伴,只需打开对应的设置就可以了。
在 easysearch.yml 中,打开下面的 elastic 的兼容参数(默认已注释):
elasticsearch.api_compatibility: true
elasticsearch.api_compatibility_version: "8.9.0"
注意 Logstash 配置中关闭自动导入模板功能。
output {elasticsearch {hosts => ["http://127.0.0.1:9200"]index => "logstash8"manage_template => false
}
}
启动 Logstash 连接到 easysearch 后, Logstash 日志会输出检测到版本 8.9.0 。
最新 Easysearch 下载地址:下载
好了,还有其他问题的小伙伴,欢迎加我微信沟通。
关于 Easysearch
INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。
官网文档:https://infinilabs.cn/docs/latest/easysearch