对从 jdbc 获取到 elasticsearch 的数据的有用查询

问题描述

我是 rails 和 elasticsearch 的新手,我有一个 rails 应用程序,它有一个表,每年有超过 200 万条记录。我的老板告诉我给这个表添加弹性搜索来有一个搜索框,这个搜索框是由特定的 sql 查询创建的,其中包含一些 sql 命令,比如包含和引用,所以我在使用 JDBC 驱动程序获取数据之前告诉过原因到弹性,一切都很顺利,但现在我必须首先提出问题 JDBC 驱动程序可以获取发送到 logstash 的数据,但我不明白为什么弹性不创建索引,我的第二个问题是关于搜索的最佳弹性查询是什么在这种状态下的索引?我在谷歌上搜索了很多,但这让我感到困惑。 这是logstash配置:

input {
   jdbc {
        jdbc_connection_string => "jdbc:postgresql://localhost:5432/mailplus_development?user=hadii"
        jdbc_driver_library => "/usr/share/logstash/postgresql-42.2.22.jar"
        jdbc_driver_class => "org.postgresql.Driver"
        jdbc_user => "postgres"     
        jdbc_password => "****"
        jdbc_validate_connection => true
        schedule => "* * * * *"
        statement => "sql query"
        clean_run => "false"
        record_last_run => "true"
        jdbc_paging_enabled => "true"
        jdbc_page_size => "50000"
    }
}

output {
      elasticsearch {
        hosts => "http://elasticsearch:9200"
        index => "shipment_order_%{+YYYY_MM_dd}"
    }
    stdout { }
} 

这是创建搜索框的SQL查询

 @shipment_items = ::ShipmentItem.includes(:barcode,shipment_order: [external_barcode: [:couple],delivery_location: %i[address contact],staff: [:customer]])
                                  .references(:barcode,shipment_order: [external_barcode: [:barcodes],staff: [:customer]])
                                  .where('customers.id = ? OR orders.customer_id = ?',current_staff.customer.id,current_staff.customer.id)

用户可以搜索该表的 6 列以上,所以我想我必须在弹性查询中定义它,但我不知道哪一个对我的工作有用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...