如何使用jdbc river向elasticsearch添加多个对象类型?

时间:2013-12-30 20:29:21

标签: elasticsearch elasticsearch-jdbc-river

我正在使用jdbc river成功地将一个对象类型“contacts”添加到elasticsearch。如何添加具有不同字段的其他联系人类型?我也想添加“公司”。

我的内容如下。我是否需要单独进行PUT声明?如果是的话,似乎没有新的数据添加到elasticsearch。

PUT /_river/projects_river/_meta
{
    "type" : "jdbc",
    "index" : {
        "index" : "ALL",
        "type" : "project",
        "bulk_size" : 500,
        "max_bulk_requests" : 1,
        "autocommit": true
        },
    "jdbc" : {
        "driver" : "com.microsoft.sqlserver.jdbc.SQLServerDriver",
        "poll" : "30s",
        "strategy" : "poll",
        "url" : "jdbc:sqlserver://connectionstring",
        "user":"username","password":"password",
        "sql" : "select ContactID as _id, * from Contact"
        }
}

此外,当搜索返回结果时,如何判断他们是联系人还是公司?现在它们都有一种“jdbc”,并且在上面的代码中更改它会引发错误。

2 个答案:

答案 0 :(得分:2)

您可以通过在SQL查询中插入多个列来实现所需的目的。

ContactID AS _id一样,您也可以在SQL查询中定义indexName AS _indexindexType AS _type

此外,如果您需要另一条河流,请添加具有不同_river类型的河流。

在您的情况下,例如,

PUT /_river/projects_river2/_meta + Query ....
PUT /_river/projects_river3/_meta + Query ....

答案 1 :(得分:0)

其他任何遇到这种情况的人,请先查看官方文档的语法:https://github.com/jprante/elasticsearch-river-jdbc/wiki/How-bulk-indexing-isused-by-the-JDBC-river

这是我使用的最终put语句:

PUT /_river/contact/_meta
{
    "type":"jdbc",
    "jdbc": {
        "driver":"com.microsoft.sqlserver.jdbc.SQLServerDriver",
        "url":"connectionstring",
        "user":"username",
        "password":"password",
        "sql":"select ContactID as _id,* from Contact",
        "poll": "5m",
        "strategy": "simple",
        "index": "contact", 
        "type": "contact" 
    }       
}