ElasticSearch 和现有 MySQL 数据库
ElasticSearch and existing MySQL database
我有 MySQL 包含数据的数据库。数据库中存在多对多关系 - 父表、子表和引用表。
我想添加全文搜索功能。我想知道 elasticsearch 是否可以帮助我。我找到了 jdbc 插件。据我了解,我必须使用以下代码为现有数据编制索引:
curl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"url" : "jdbc:mysql://localhost:3306/test",
"user" : "",
"password" : "",
"sql" : "any complex sql query, it can be select from 3 tables"
}
}'
所以我有以下问题:
- 不管我有什么样的数据库方案。我只有
提供 sql 查询和 elasticsearch 索引获取的数据。
这样对吗?
- 添加新数据时需要做什么?我应该
在两个地方添加新记录?在 sql 数据库和 elastichsearch
指数?这是对的吗?谢谢。
文档摘录river documentation:
scheme无所谓,查询的结果会转换成有效的Elasticsearch JSON:
将生成以下 JSON 个文件:
id=<random> {"product":"Apples","created":null,"department":"American Fruits","quantity":1,"customer":"Big"}
id=<random> {"product":"Bananas","created":null,"department":"German Fruits","quantity":1,"customer":"Large"}
id=<random> {"product":"Oranges","created":null,"department":"German Fruits","quantity":2,"customer":"Huge"}
id=<random> {"product":"Apples","created":1338501600000,"department":"German Fruits","quantity":2,"customer":"Good"}
id=<random> {"product":"Oranges","created":1338501600000,"department":"English Fruits","quantity":3,"c
建议使用UTC时间戳进行同步。此示例使用毫秒分辨率列 mytimestamp:
获取自上一条河流 运行 以来添加的所有产品行
{
"type" : "jdbc",
"jdbc" : {
"url" : "jdbc:mysql://localhost:3306/test",
"user" : "",
"password" : "",
"sql" : [
{
"statement" : "select * from \"products\" where \"mytimestamp\" > ?",
"parameter" : [ "$river.state.last_active_begin" ]
}
],
"index" : "my_jdbc_river_index",
"type" : "my_jdbc_river_type"
}
}
我有 MySQL 包含数据的数据库。数据库中存在多对多关系 - 父表、子表和引用表。
我想添加全文搜索功能。我想知道 elasticsearch 是否可以帮助我。我找到了 jdbc 插件。据我了解,我必须使用以下代码为现有数据编制索引:
curl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"url" : "jdbc:mysql://localhost:3306/test",
"user" : "",
"password" : "",
"sql" : "any complex sql query, it can be select from 3 tables"
}
}'
所以我有以下问题:
- 不管我有什么样的数据库方案。我只有 提供 sql 查询和 elasticsearch 索引获取的数据。 这样对吗?
- 添加新数据时需要做什么?我应该 在两个地方添加新记录?在 sql 数据库和 elastichsearch 指数?这是对的吗?谢谢。
文档摘录river documentation:
scheme无所谓,查询的结果会转换成有效的Elasticsearch JSON:
将生成以下 JSON 个文件:
id=<random> {"product":"Apples","created":null,"department":"American Fruits","quantity":1,"customer":"Big"}
id=<random> {"product":"Bananas","created":null,"department":"German Fruits","quantity":1,"customer":"Large"}
id=<random> {"product":"Oranges","created":null,"department":"German Fruits","quantity":2,"customer":"Huge"}
id=<random> {"product":"Apples","created":1338501600000,"department":"German Fruits","quantity":2,"customer":"Good"}
id=<random> {"product":"Oranges","created":1338501600000,"department":"English Fruits","quantity":3,"c
建议使用UTC时间戳进行同步。此示例使用毫秒分辨率列 mytimestamp:
获取自上一条河流 运行 以来添加的所有产品行{ "type" : "jdbc", "jdbc" : { "url" : "jdbc:mysql://localhost:3306/test", "user" : "", "password" : "", "sql" : [ { "statement" : "select * from \"products\" where \"mytimestamp\" > ?", "parameter" : [ "$river.state.last_active_begin" ] } ], "index" : "my_jdbc_river_index", "type" : "my_jdbc_river_type" } }