|
@@ -0,0 +1,71 @@
|
|
|
|
|
+<?php
|
|
|
|
|
+
|
|
|
|
|
+namespace App\Console\Commands;
|
|
|
|
|
+
|
|
|
|
|
+use App\Services\OpenSearchService;
|
|
|
|
|
+use Illuminate\Console\Command;
|
|
|
|
|
+
|
|
|
|
|
+class UpdateOpenSearchIndex extends Command
|
|
|
|
|
+{
|
|
|
|
|
+ /**
|
|
|
|
|
+ * The name and signature of the console command.
|
|
|
|
|
+ * php artisan create:opensearch.index
|
|
|
|
|
+ * @var string
|
|
|
|
|
+ */
|
|
|
|
|
+ protected $signature = 'update:opensearch.index';
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * The console command description.
|
|
|
|
|
+ *
|
|
|
|
|
+ * @var string
|
|
|
|
|
+ */
|
|
|
|
|
+ protected $description = 'Command description';
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * Create a new command instance.
|
|
|
|
|
+ *
|
|
|
|
|
+ * @return void
|
|
|
|
|
+ */
|
|
|
|
|
+ public function __construct()
|
|
|
|
|
+ {
|
|
|
|
|
+ parent::__construct();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * Execute the console command.
|
|
|
|
|
+ *
|
|
|
|
|
+ * @return int
|
|
|
|
|
+ */
|
|
|
|
|
+ public function handle()
|
|
|
|
|
+ {
|
|
|
|
|
+ $openSearch = app(OpenSearchService::class);
|
|
|
|
|
+
|
|
|
|
|
+ // Test OpenSearch connection
|
|
|
|
|
+ $open = $openSearch->testConnection();
|
|
|
|
|
+ if ($open[0]) {
|
|
|
|
|
+ $this->info($open[1]);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $this->error($open[1]);
|
|
|
|
|
+ return 1; // Exit with error code
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Attempt to create or update index
|
|
|
|
|
+ $this->warn('Index already exists, attempting to update...');
|
|
|
|
|
+ try {
|
|
|
|
|
+ $update = $openSearch->updateIndex();
|
|
|
|
|
+ if (!empty($update['settings']) && $update['settings']['acknowledged']) {
|
|
|
|
|
+ $this->info('Index settings updated successfully');
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!empty($update['mappings']) && $update['mappings']['acknowledged']) {
|
|
|
|
|
+ $this->info('Index mappings updated successfully');
|
|
|
|
|
+ }
|
|
|
|
|
+ if (empty($update['settings']) && empty($update['mappings'])) {
|
|
|
|
|
+ $this->warn('No settings or mappings provided for update');
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (\Exception $updateException) {
|
|
|
|
|
+ $this->error('Failed to update index: ' . $updateException->getMessage());
|
|
|
|
|
+ return 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ return 0;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|