检查索引是否存在Elasticsearch

Chr*_*sen 7 php indexing elasticsearch

如果索引存在与否,我想检查elasticsearch.如果它不存在,它应该创建索引并执行其他功能.我试图找到解决方案,但没有找到任何完美的解决方案.任何人都可以有任何解决方案来解决这个问题

我正在使用Elasticsearch库.

**$client = new Elasticsearch\Client();**
Run Code Online (Sandbox Code Playgroud)

kee*_*ety 24

根据索引操作源代码,以下内容应该有效

 $client = new Elasticsearch\Client();
 $indexParams['index']  = 'my_index';   
 $client->indices()->exists($indexParams);
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,在更高版本的 elastic 中(我使用的是 7.6),访问 ES 的用户需要“view_index_metadata”的权限。如果使用 Kibana,您可以通过“management/security/roles”的索引权限部分访问这些选项,然后通过“management/security/users”将角色分配给用户 (2认同)

小智 5

这将返回 true 或 false:

$params = ['index' => 'products'];
$bool=$client->indices()->exists($params);
Run Code Online (Sandbox Code Playgroud)


ale*_*xkb 5

对于 Elasticsearch (8.x) 的最新版本,使用 php 库(对应的版本 8.x),调用$client->indices()->exists($indexParams)不再返回布尔值,而是返回Elastic\Elasticsearch\Response\Elasticsearch. 如果索引存在,则此响应实际上是 200 HTTP 响应,如果不存在,则为 HTTP 404,但它还具有asBool()您可以使用的有用功能,可以抽象出 HTTP 代码,例如

$client->indices()->exists($indexParams)->asBool();
Run Code Online (Sandbox Code Playgroud)