elasticsearch,logstash,Python,Arrays,Json,elasticsearch,Logstash" /> elasticsearch,logstash,Python,Arrays,Json,elasticsearch,Logstash" />

Python 在弹性搜索中将关系数据库表存储为不同的索引是否好?如果是,那么如何在索引中传递关系

Python 在弹性搜索中将关系数据库表存储为不同的索引是否好?如果是,那么如何在索引中传递关系,python,arrays,json,elasticsearch,logstash,Python,Arrays,Json,elasticsearch,Logstash,例如,在我的例子中,有3个postgres表被主键链接并共享数据 1) 产品表-包含所有产品价值和价格等 2.)营养素-它包含具有重复主键的产品的营养素 3.)食用量-它包含营养素的食用量 我将这些数据传输到elasticsearch,在连接之后,它变得更加复杂。 所以我想把这些数据传输到elasticsearch,NDB_NO作为文档id,在它下面,所有的数据都会出现。我需要帮助。。 这要看情况而定 有时,在Elasticsearch中镜像数据库表是有意义的。例如,如果您希望用户能够自己搜索营

例如,在我的例子中,有3个postgres表被主键链接并共享数据

1) 产品表-包含所有产品价值和价格等

2.)营养素-它包含具有重复主键的产品的营养素

3.)食用量-它包含营养素的食用量

我将这些数据传输到elasticsearch,在连接之后,它变得更加复杂。 所以我想把这些数据传输到elasticsearch,NDB_NO作为文档id,在它下面,所有的数据都会出现。我需要帮助。。 这要看情况而定

有时,在Elasticsearch中镜像数据库表是有意义的。例如,如果您希望用户能够自己搜索营养素列表和产品列表,最好使用两个Elasticsearch标记

然而,听起来您想要的,并且在Elasticsearch世界中更常见的是,在索引到Elasticsearch时,将来自不同表的数据组合在一起。由于全文搜索的工作方式,您通常希望删除您的数据。在关系数据库世界中,反规范化通常是一种反模式,但通常是Elasticsearch的最佳实践

下面是一个示例,如果您希望用户能够搜索包含各种营养素的产品,您可能希望对产品文档进行如下索引:

#change host to reflect your Elasticsearch server
curl -XPUT 'http://localhost:9200/products/_doc/1' -d '{
  "name": "Banana",
  "nutrients": ["potassium", "vitamin C", "copper"]
}'

curl -XPUT 'http://localhost:9200/products/_doc/2' -d '{
  "name": "Rice",
  "nutrients": ["manganese", "copper"]
}'

curl -XPUT 'http://localhost:9200/products/_doc/3' -d '{
  "name": "Orange",
  "nutrients": ["Vitamin C", "Thiamin"]
}'
请原谅我对营养信息的拙劣尝试

如你所见,托儿所的名字经常重复。但是,这种方法允许您使用Elasticsearch的全文搜索功能来查找具有所需营养素的任何项目

您可能希望在Elasticsearch中为您的产品重新使用关系数据库中的ID(或将它们存储在另一个字段中),这样您就可以返回数据的“源”以获取更多信息