由于每次我需要某些数据(如1000行数组)时我都不想调用API,我想将该数组存储在ElasticSearch中,这样我就可以轻松获取此数组,而无需调用api。我正在使用FOS Elastic Bundle。这甚至可以制作,如果是这样的话?
我会做什么:
-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.
答案 0 :(得分:0)
我建议您定义一个带有映射的类型,该映射可以覆盖数据库中的单个行。之后,当您从数据库中获取1000行时,您可以在1000个文档的形式中在单个批量索引调用中索引这1000行:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html 然后,您可以获取这1000个文档以在控制器中使用。
或者,您可以使用嵌套属性定义映射。此嵌套属性应与数据库中的行相同。使用此方法,您可以在嵌套属性中创建一个包含1000行数据的单个文档,如数组。之后,您可以获取此单个文档。
哪种策略更好将取决于您的要求。第二个是较重的索引过程,而第一个是相对较重的获取过程。根据我使用ElasticSearch的经验,最好有更轻的索引请求以确保数据一致性。根据您的数据,您可以创建具有特定模式ID且已知ID的1000个文档,获取这些文档会变得非常有效。