gpt4 book ai didi

mysql - 在 Rails 上的现有 MySQL 数据库上实现 Elasticsearch

转载 作者:行者123 更新时间:2023-11-29 08:06:35 26 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 和 MySQL 数据库开发一个 Web 应用程序。我想在应用程序中包含 elasticsearch 功能。我是否必须将 MySQL 数据库迁移到 NoSQL 数据库并配置数据库连接(从头开始),或者是否有一种方法可以更好地实现它?

最佳答案

确实需要将数据放入 Elasticsearch(对数据进行“索引”),以便可以 Elasticsearch 搜索中使用它。

执行此操作的新方法是使用 Logstash JDBC Input有效地执行与下面的 JDBC River 相同的操作。

<小时/>

执行此操作的旧方法是使用 JDBC River 架构。此功能已从 Elasticsearch 2.x 中删除,因为 Rivers 通常给 Elasticsearch 引入了许多不可预测的可变性(基本上是一个在其中运行的小型应用程序,可以在内存中膨胀)。 JDBC River 做得特别好,但由于被删除,任何新的开发都不应开始使用它。您可以手动执行此操作,也可以使用 JDBC River plugin 自动执行此操作。 ,正是出于此目的而被广泛使用。

理想情况下,您可以使用simple example将列名称映射为其值的键(在名称中添加句点,例如 name.first 将创建对象嵌套)。

curl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"url" : "jdbc:mysql://localhost:3306/test",
"user" : "",
"password" : "",
"sql" : "select products.name as \"product.name\", orders.customer as \"product.customer.name\", orders.quantity * products.price as \"product.customer.bill\" from products, orders where products.name = orders.product"
}
}'

这直接来自文档,结果如下:

mysql> select products.name as "product.name", orders.customer as "product.customer", orders.quantity * products.price as "product.customer.bill" from products, orders where products.name = orders.product ;
+--------------+------------------+-----------------------+
| product.name | product.customer | product.customer.bill |
+--------------+------------------+-----------------------+
| Apples | Big | 1 |
| Bananas | Large | 2 |
| Oranges | Huge | 6 |
| Apples | Good | 2 |
| Oranges | Bad | 9 |
+--------------+------------------+-----------------------+
5 rows in set, 5 warnings (0.00 sec)

最后,JDBC River 将这些结果转换为:

id=0 {"product":{"name":"Apples","customer":{"bill":1.0,"name":"Big"}}}
id=1 {"product":{"name":"Bananas","customer":{"bill":2.0,"name":"Large"}}}
id=2 {"product":{"name":"Oranges","customer":{"bill":6.0,"name":"Huge"}}}
id=3 {"product":{"name":"Apples","customer":{"bill":2.0,"name":"Good"}}}
id=4 {"product":{"name":"Oranges","customer":{"bill":9.0,"name":"Bad"}}}

所有示例信息均直接取自文档。

关于mysql - 在 Rails 上的现有 MySQL 数据库上实现 Elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22618938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com