2

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

我所拥有的如下。我需要做一个单独的 PUT 语句吗?如果我这样做了,似乎没有新数据添加到弹性搜索中。

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”,在上面的代码中更改它会引发错误。

4

2 回答 2

2

您可以通过在 sql 查询中插入几列来实现您想要的。

就像ContactID AS _id你也可以在你的 sql 查询中定义indexName AS _index和。indexType AS _type

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

在您的情况下,例如,

PUT /_river/projects_river2/_meta + Query ....
PUT /_river/projects_river3/_meta + Query ....
于 2014-01-01T13:22:56.770 回答
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" 
    }       
}
于 2014-01-23T21:52:33.157 回答