You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用matchish/laravel-scout-elasticsearch时scout:import给索引加时间戳如何禁用?

原因说明

你遇到的索引自动追加时间戳是matchish/laravel-scout-elasticsearch扩展的默认设计:为了实现零停机数据导入,每次执行导入命令时会先创建带时间戳的新索引,全量数据同步完成后再自动切换别名指向新索引,旧索引保留可用于回滚,避免导入过程中影响线上查询。

禁用时间戳后缀的两种方案


方案1:全局禁用零停机索引机制

直接修改config/scout_elasticsearch.php配置文件,新增indexer配置项指定为无操作索引器即可,修改后的完整配置如下:

<?php

return [
    'host' => env('ELASTICSEARCH_HOST'),
    // 新增以下配置行
    'indexer' => \Matchish\ScoutElasticSearch\ElasticSearch\Indexer\NoopIndexer::class,
    'indices' => [
        'mappings' => [
            'default' => [
                'properties' => [
                    'id' => [
                        'type' => 'keyword',
                    ],
                ],
            ],
            'events' => [
                'properties' => [
                   'id' => [
                     'type' => 'keyword'
                   ]
                ]
            ],
            'groups' => [
                'properties' => [
                    'id' => [
                      'type' => 'keyword'
                    ]
                ]
            ]
        ],
        'settings' => [
            'default' => [
                'number_of_shards' => 1,
                'number_of_replicas' => 0,
            ],
        ],
    ],
];

配置修改完成后,再执行php artisan scout:import命令,生成的索引名就会和模型searchableAs()方法返回的名称完全一致,不会自动追加时间戳。


方案2:单次导入临时禁用,不修改全局配置

如果不需要全局禁用零停机机制,仅某一次导入需要固定索引名,可以在执行导入命令时直接指定索引名称:

php artisan scout:import "App\Models\Group" --index=groups

执行后会直接生成名为groups的固定索引,无时间戳后缀。

注意事项

禁用自动加时间戳的机制后,导入时会直接覆盖原有索引的内容,导入过程中会出现短时间的查询不可用或数据不一致,仅适合开发环境或对可用性要求不高的场景使用。


内容的提问来源于stack exchange,提问作者Jason Jozwiak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:24:04