头图

背景

很多小伙伴都在使用 Logstash ,随着各家安全扫描、安全策略的加固,不少小伙伴已经开始使用 Logstash 8 了。在使用 Logstash 8 连接 Easysearch 的时候可能会遇到问题,比如下图。

提示连接的不是兼容版本的 Elasticsearch 。

解决方法有两种

两种方法对 Logstash 和 Logstash-oss 两种版本都适用。

一、用 INFINI Gateway 代理 Easysearch

使用此方法, Logstash 连接的是 INFINI Gateway ,由 INFINI Gateway “通过” Logstash 8 的检查。

优点是对 Easysearch 版本无要求。

默认的网关配置要稍作修改。

  1. 修改 router.rules 部分
router:
  - name: my_router
    default_flow: default_flow
    tracing_flow: logging_flow
    rules:
      - method:
          - "GET"
        pattern:
          - "/"
        flow:
          - overwrite_flow
      - method:
          - "GET"
        pattern:
          - "/_license"
        flow:
          - overwrite_license_flow
      - method:
          - "*"
        pattern:
          - "/_bulk"
          - "/{any_index}/_bulk"
        flow:
          - async_bulk_flow
  1. flow 下增加 overwrite_flow 和 overwrite_license_flow
 - name: overwrite_flow
    filter:
      - elasticsearch:
          elasticsearch: prod
          max_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_flow
    filter:
      - 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


极限实验室
1 声望2 粉丝

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


引用和评论

0 条评论