如何保持SQL数据和Elasticsearch的同步,从哪个搜索?

问题描述 投票:0回答:1

我看到有两种解决方案,不知道大多数人是怎么做的。

  1. 使用logstash

  2. 对你的应用程序进行编码,使其与SQL一起写入Elasticsearch。例如

public saveRecord() {
    saveToElasticsearch();
    saveToSQL();
}

另一个问题是如何处理实际搜索实体?你是否只使用Elasticsearch?

如果不是,我会假设你是基于关键字从Elasticsearch中获取,并使用返回的ID来过滤你的SQL查询。那么我的问题是,你是如何处理分页的?例如,我们假设你只想要50到100的结果。首先你查询Elasticsearch,它返回50-100。然后SQL查询将其减少到20个结果--其他30个结果在下一个Elasticsearch查询中(例如100 - 150)。你是否一直在来回走?

sql elasticsearch search synchronization replicate
1个回答
1
投票

对于你的第一个问题 看这里

至于第二个问题,如果你打算使用elasticsearch作为你的搜索层,那么最好对所有可搜索的filterable字段进行搜索。正如你所描述的那样,替代方案很快就会变得非常混乱。如果适合你的需求,就把elasticsearch用于所有的搜索过滤甚至聚合。使用sql数据库作为你的真实点,从那里获取完整的有效载荷即可。

一般来说,如果你将需要分页,那么你的搜索最好放在一个地方,否则会变得很丑陋。

© www.soinside.com 2019 - 2024. All rights reserved.