如何在弹性搜索中存储可重用数据
How to store reusable data in elastic search
因为我不想每次需要某些数据(比如 1000 行的数组)时都调用 API,所以我想将该数组存储在 ElasticSearch 中,这样我就可以轻松地获取这个数组而无需需要调用api。我正在使用 FOS 弹性捆绑包。这甚至有可能制作吗?如果可以的话?
我会做什么:
-I have a function that gets this data from database
-I would like to save this data in ES after calling php bin/console fos:elastica:populate
-use this array in controller to return it to the view and use it there.
我建议您使用可以覆盖数据库中单行的映射来定义类型。之后,当您从数据库中获取了 1000 行后,您可以在单个批量索引调用中以 1000 个文档的形式为这 1000 行编制索引:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html
然后您可以获取这 1000 个文档以在控制器中使用。
或者,您可以使用嵌套 属性 定义映射。这个嵌套的 属性 应该与数据库中的一行相同。使用它,您可以在嵌套的 属性 中创建一个包含 1000 行数据的文档,就像一个数组。之后,您可以获取该单个文档。
这些策略中哪种更好取决于您的要求。第二个是较重的索引过程,而第一个是相对较重的提取过程。根据我使用 ElasticSearch 的经验,最好有更轻的索引请求来确保数据的一致性。根据您的数据,您可以创建 1000 个具有特定模式和已知 ID 的文档,获取这些文档变得非常高效。
因为我不想每次需要某些数据(比如 1000 行的数组)时都调用 API,所以我想将该数组存储在 ElasticSearch 中,这样我就可以轻松地获取这个数组而无需需要调用api。我正在使用 FOS 弹性捆绑包。这甚至有可能制作吗?如果可以的话?
我会做什么:
-I have a function that gets this data from database
-I would like to save this data in ES after calling php bin/console fos:elastica:populate
-use this array in controller to return it to the view and use it there.
我建议您使用可以覆盖数据库中单行的映射来定义类型。之后,当您从数据库中获取了 1000 行后,您可以在单个批量索引调用中以 1000 个文档的形式为这 1000 行编制索引:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html 然后您可以获取这 1000 个文档以在控制器中使用。
或者,您可以使用嵌套 属性 定义映射。这个嵌套的 属性 应该与数据库中的一行相同。使用它,您可以在嵌套的 属性 中创建一个包含 1000 行数据的文档,就像一个数组。之后,您可以获取该单个文档。
这些策略中哪种更好取决于您的要求。第二个是较重的索引过程,而第一个是相对较重的提取过程。根据我使用 ElasticSearch 的经验,最好有更轻的索引请求来确保数据的一致性。根据您的数据,您可以创建 1000 个具有特定模式和已知 ID 的文档,获取这些文档变得非常高效。