elasticsearch,Rest,Full Text Search,Nosql,Search Engine,elasticsearch" /> elasticsearch,Rest,Full Text Search,Nosql,Search Engine,elasticsearch" />

Rest 触发河流更新弹性搜索

Rest 触发河流更新弹性搜索,rest,full-text-search,nosql,search-engine,elasticsearch,Rest,Full Text Search,Nosql,Search Engine,elasticsearch,我有一个使用jdbc river插件的弹性搜索河设置,它只需从表中进行简单的选择*并索引该表 但我希望能够通过API以及在标准时间间隔内按需触发river,以便在将文档插入此表时让它索引文档 有人知道目前是否有必要这样做吗 i、 e。 /\u river/my\u river/\u refresh 谢谢。我看不出有什么好方法可以让JDBC河实时为您的特定更新文档编制索引,我也不确定它是否用于此目的 与其触发JDBC河为文档编制索引,不如直接从更新代码中为文档编制索引 JDBC河是一种输入大量数据

我有一个使用jdbc river插件的弹性搜索河设置,它只需从表中进行简单的选择*并索引该表

但我希望能够通过API以及在标准时间间隔内按需触发river,以便在将文档插入此表时让它索引文档

有人知道目前是否有必要这样做吗

i、 e。
/\u river/my\u river/\u refresh


谢谢。

我看不出有什么好方法可以让JDBC河实时为您的特定更新文档编制索引,我也不确定它是否用于此目的

与其触发JDBC河为文档编制索引,不如直接从更新代码中为文档编制索引


JDBC河是一种输入大量数据流的好方法,而且有很多优点。但是我认为没有一个简单的方法可以满足您的实时要求。

谢谢您的建议。欢迎您提供反馈,请加入elasticsearch社区。我将在

上打开一个触发获取的问题,听起来您正在努力解决经典的“”索引问题。河流设计用于每隔一段时间从数据库中提取数据。它们很容易设置,但就像计算机科学中的所有东西一样,它们是一种权衡。具体来说,您将丢失实时索引。您可以触发的河流可能是两个世界中最好的河流,或者它可能会使您的服务器淹没大量不必要的流量(即,当您确切知道更新了哪个文档时,为什么要“选择*…”)


如果您有实时索引需求(就像我一样),您可以将更新“推”到Elasticsearch中。您只需要编写一个Elasticsearch客户端,它将在保存更新的记录时将其发送给Elasticsearch。FWIW,我通过在服务总线上触发消息解决了这个问题,而在另一端等待的服务从SQL检索实体并对其编制索引。一旦有了这个基础设施,编写一个小应用程序来完成SQL数据的初始导入或创建一个索引数据的计划作业就不是什么大事了。

alernative将与jdbc插件一起使用logstash

  • 下载日志存储
  • 安装输入jdbc插件
  • 配置示例:

        input {
                jdbc {
                        jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:XE"
                        jdbc_user => "user"
                        jdbc_driver_library => "/home/logstash/lib/ojdbc6.jar"
                        jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
                        statement => "select * from events where update_date > :sql_last_value order by update_date"
                        last_run_metadata_path => "run_metadata_event.log"
                        schedule => "* * * * *"
                        jdbc_password => "password"
                }
        }
        # The filter part of this file is commented out to indicate that it is
        # optional.
        filter {
               mutate {
                       split => { "field_1" => ";"}
    
               }
        }
    
        output {
            elasticsearch {
                #protocol => "http"
                hosts => ["localhost:9200"]
                index => "items"
                document_type => "doc_type"
                document_id => "%{doc_id}"
            }
        }
    

    这是非常有用的信息(尤其是问题链接),但它可能应该是对原始帖子的评论,而不是对问题的实际“回答”,因为没有提供问题的解决方案。谢谢(我意识到这很古老,但仍然如此)此外,在创建问题后发布评论会很有帮助,这样链接就可以成为实际问题,而不是强迫人们搜索它来检查状态。虽然这在理论上可以回答问题,但在这里包括答案的基本部分,并提供链接供参考。