我正在使用Elasticsearch搜索产品。每天执行产品信息的完整索引。我正在删除和重新创建索引,以进行干净的索引,但我不确定当时如何处理产品搜索。在完全索引时处理查询的标准方法如何?在清理完整索引期间,我考虑在创建一个全新的索引后通过状态检查逻辑地处理它,但我想知道是否有更好的方法。
2izufjch1#
正确的做法是使用别名。您有当前的产品索引,我们称之为products-1,它的别名为products。所有的搜索查询都通过别名而不是索引名。当你需要重新索引你的产品时,你这样做,但在一个名为products-2的新索引中,当你完成索引并测试一切正常时,你只需使用以下命令切换别名,你的搜索查询将不间断地进行:
products-1
products
products-2
POST _aliases { "actions": [ { "remove": { "index": "products-1", "alias": "products" } }, { "add": { "index": "products-2", "alias": "products" } } ] }
然后,您可以继续删除索引,或者如果您有信心,您可以在像这样的单个步骤中完成它:
POST _aliases { "actions": [ { "remove_index": { "index": "products-1" } }, { "add": { "index": "products-2", "alias": "products" } } ] }
1条答案
按热度按时间2izufjch1#
正确的做法是使用别名。您有当前的产品索引,我们称之为
products-1
,它的别名为products
。所有的搜索查询都通过别名而不是索引名。当你需要重新索引你的产品时,你这样做,但在一个名为
products-2
的新索引中,当你完成索引并测试一切正常时,你只需使用以下命令切换别名,你的搜索查询将不间断地进行:然后,您可以继续删除索引,或者如果您有信心,您可以在像这样的单个步骤中完成它: