是否可以使用ElasticSearch从文档A和B合并以创建文档C

时间:2019-03-22 23:14:52

标签: elasticsearch merge document

我的问题是我需要对来自两个不同数据源的数据进行排序,一个是MySQL数据库,其中包含有关某些产品的信息;另一个是PostgreSQL,其中包含与这些产品相关的一些度量。

因为数据位于两个不同的数据源中,所以我不能开箱即用地提出一个性能查询,该查询将在数据库级别进行排序(分页)。 我需要进行两个不同的查询,然后手动合并数据并执行排序和分页代码端。 我希望尽可能避免创建自定义的分页系统和手动数据合并,并尽可能避免将此工作委派给基础数据库。

这就是我认为诸如ElasticSearch(或Solr,但ES似乎更易于使用)之类的系统可以提供帮助的地方。

1)ES是否提供将2个数据源合并为1个文档的工具或机制?还是需要由第三方工具完成这项工作,该工具会定期从两个数据源中提取数据并创建/更新文档?

2)我正确地假设,由于ES无法执行联接查询,因此具有2个索引(或2个不同的文档类型)是没有意义的吗?

3)除了创建单个文档外,ES还有什么其他解决方案可以帮助ES?是否有可能“以某种方式”将index1中的datasource1数据和index2中的datasource2数据包含在内,所以我可以同时使用两个索引执行多个搜索查询(因为联接是不可行的)。

1 个答案:

答案 0 :(得分:0)

  

ES是否提供将2个数据源合并为1个文档的工具或机制?还是需要由第三方工具完成这项工作,该工具会定期从两个数据源中提取数据并创建/更新文档?

有两种方法可以做到这一点:

  1. 一个ETL流程(提取,转换,加载),用于将两个来源的数据加载到一个文档中。在Elastic世界中,您可以使用logstash完成此操作
  2. Data Virtualization可以做到这一点,而无需复制数据
  

3)除了创建单个文档外,ES还有什么其他解决方案可以帮助ES?是否有可能“以某种方式”将index1中的datasource1数据和index2中的datasource2数据包含在内,所以我可以同时使用两个索引执行多个搜索查询(因为联接是不可行的)。

通过多个索引执行单个查询非常容易。 Answers here