我正在使用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”,并且在上面的代码中更改它会引发错误。
答案 0 :(得分: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 ....
答案 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"
}
}