如何在Elastic Search中为数据库表编制索引

时间:2018-09-07 06:30:14

标签: elasticsearch indexing

我是弹性搜索的新手,想将我的整个数据库复制到弹性中,以进行高级搜索和分析。我的问题是,我应该只为每个表创建一个应用程序索引和“类型”。就我而言,这将是: -http://elastichost/my-cool-app/my-table/id

db大约为15G atm,并且增长迅速,因此我正在寻找有关用于弹性的最佳索引/类型结构的建议,因此创建索引等后不久,我将不需要更改整个设置。

谢谢。

2 个答案:

答案 0 :(得分:0)

在没有数据样本的情况下很难推荐结构...

因为您是新手,所以映射是Elasticsearch的一项重要工作,这就是索引数据并进行搜索的方式,您可以更改映射=>必须对数据重新索引。

所以最好的建议是对索引my-data-v1进行版本化,并使用链接到它的别名my-data。因此,您可以更改映射,创建新索引,重新索引所有数据,然后更改别名,而无需停机。关于索引类型,从6.x版本开始,索引可以具有单一类型(因此不必担心^^)。

关于映射本身,没有魔术规则,请阅读文档,进行测试和测试。

答案 1 :(得分:0)

恕我直言,第一步是对数据进行非规范化

例如,如果您有一个带客户详细信息的customer_master,带产品详细信息的product_master和带customer_id,product_id和订单详细信息的订单表,则最好将它们全部归一化为一个表并为该表建立索引在ES中的单个索引中。这样,您可以按客户详细信息,产品详细信息或订单详细信息搜索订单。

然后可以为每组相关表创建一个非规范化索引,​​并在ES中对其进行索引。

15 GB看起来不是很多数据。 (我们已经在一个小型ES群集中​​索引了3亿行数据,该群集基于4台商用硬件机器。数据大小为100s GB)

我想补充一点,没有完美的方法来为数据建立索引,您必须在最终确定一个构想之前尝试多个构想。如果您将ES用作分析平台(而不是作为主要数据源),则在实验阶段多次为数据建立索引应该不是问题。

我的2美分。

相关问题