提问者:小点点

如何在Elasticsearch php客户端api中按别名查找索引


我正在创建搜索应用程序。当我将数据重新索引到elasticsearch时,重新索引时不应该停机。我想让重新索引过程零停机时间。我正在尝试这样做:

找到有别名的旧索引。创建新索引并填充新数据删除别名并删除旧索引给出新索引别名

我们如何使用php客户端库做到这一点。


共1个答案

匿名用户

我不明白为什么人们会给他反对票,问题很简单,弹性搜索的文档也不容易理解!

不管怎样,这是解决办法:

class SomeClass
{
    /** @var \Elasticsearch\Client */
    private $client;

    /**
     * @param \Elasticsearch\Client $client
     */
    public function __construct(\Elasticsearch\Client $client)
    {
        $this->client = $client;
    }

    /**
     * @param string $aliasName
     *
     * @return null|string
     */
    public function findIndexNameByAlias($aliasName)
    {
        $aliases = $this->client->indices()->getAliases();
        foreach ($aliases as $index => $aliasMapping) {
            if (array_key_exists($aliasName, $aliasMapping['aliases'])) {
                return $index;
            }
        }

        return null;
    }
}

$someClass = new SomeClass(new \Elasticsearch\Client());
echo "Index associated with 'MyAlias': " . $someClass->findIndexNameByAlias('MyAlias');