当前位置: 首页 > 知识库问答 >
问题:

logstash JDBC插件多态索引

陈实
2023-03-14

嗨,我们有一个表,是多态性的项目,我们想找到一种方法来更新不同的索引在一个logstash配置。

下面是一个示例表。item\u type列表示类型(如Pen、Post、Collection),item\u id是数据库中项目的外键,score在cron上计算,并每隔一段时间更新一次,这会更新updated\u的列。

popularity_scores

使用LogstashJDBC插件,我们希望查询数据,然后将其推送到ES。但是,我看不到一种方法(除了每个项类型的logstash配置和sql查询)来动态地将更新推送到索引。在一个完美的世界中,我们希望从上表中获取输入(参见下面的输入代码)

输入

    input {
        jdbc {
            jdbc_driver_library => "/usr/share/logstash/bin/mysql-connector-java-8.0.15.jar"
            jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
            # useCursorFetch needed cause jdbc_fetch_size not working??
            # https://discuss.elastic.co/t/logstash-jdbc-plugin/84874/2
            # https://stackoverflow.com/a/10772407
            jdbc_connection_string => "jdbc:mysql://${CP_LS_SQL_HOST}:${CP_LS_SQL_PORT}/${CP_LS_SQL_DB}?useCursorFetch=true&autoReconnect=true&failOverReadOnly=false&maxReconnects=10"
            statement => "select * from view_elastic_popularity_all where updated_at > :sql_last_value"
            jdbc_user => "${CP_LS_SQL_USER}"
            jdbc_password => "${CP_LS_SQL_PASSWORD}"
            jdbc_fetch_size => "${CP_LS_FETCH_SIZE}"
            last_run_metadata_path => "/usr/share/logstash/cp/last_run_files/last_run_popularity_live"
            jdbc_page_size => '10000'
            use_column_value => true
            tracking_column => 'updated_at'
            tracking_column_type => 'timestamp'
            schedule => "* * * * *"
        }
    }

然后通过输出插件向ES运行更新查询(参见下面的输出代码)

输出

    output {
      elasticsearch {
          index => "HOW_DO_WE_DYNAMICALLY_SET_INDEX_BASED_ON_ITEM_TYPE?"
          document_id => "%{id}"
          hosts => ["${CP_LS_ES_HOST}:${CP_LS_ES_PORT}"]
          user => "${CP_LS_ES_USER}"
          password => "${CP_LS_ES_PASSWORD}"
      }
    }

我们不可能是第一家有这个问题的公司。我们将如何组织输出?


共有1个答案

姬歌者
2023-03-14

可以使用事件消息中的字段动态设置索引的名称,方法与动态设置document_id相同。

output {
  elasticsearch {
      index => "%{item_type}"
      document_id => "%{id}"
      hosts => ["${CP_LS_ES_HOST}:${CP_LS_ES_PORT}"]
      user => "${CP_LS_ES_USER}"
      password => "${CP_LS_ES_PASSWORD}"
  }
}
 类似资料:
  • 将搜索功能添加到 jsTree。 $.jstree.defaults.searchsearch plugin 存储搜索插件的所有默认值 $.jstree.defaults.search.ajaxsearch plugin 类似于 jQuery 的 AJAX 配置,如果应查询服务器以获取结果,则jstree使用该配置。 str 请求中将添加一个(搜索字符串)参数,inside 如果搜索仅限于节点ID

  • 当couchbase与弹性搜索插件集成时,这更像是一个设计问题。我在之前的产品中使用了couchbase和Multitenance,我们遵循了couchbase博客上的第一个建议,即所有租户使用单一couchbase Bucket。 目前,我们正在研究利用Couchbase弹性搜索插件对Couchbase数据进行弹性搜索。通过Couchbase弹性搜索插件留档(安装和设置)我意识到,你将能够只映射

  • 使用可用选项(localStorage,Cookie等)将树的状态(选定节点,打开的节点)保存在用户计算机上 $.jstree.defaults.statestate plugin 存储状态插件的所有默认值 $.jstree.defaults.state.keystate plugin 保存当前树时使用的键的字符串(如果在项目中使用多个树,则更改)。默认为 jstree. $.jstree.def

  • Hugo是由 Steve Francis 大神(http://spf13.com/)基于Go语言开发的静态网站构建工具。没错你现在看到的本博客blog.qikqiak.com就是基于Hugo的,使用 Hugo 创建一个网站是非常简单的,基本上没有什幺门槛,官方还提供了大量的主题供你选择,你只需要专心写你的文章就行。不过有个问题是搜索,我们知道搜索属于动态行为了,如何给静态网站增加搜索功能呢?当然我

  • 敬请期待~~~

  • 此插件为jQuery的zTree插件的一个插件,主要为zTree提供从多个数据源获取数据的功能,使得后台可以维护各自节点的数据。 新版的ztree已经有此功能,无需再使用此插件