How to reproduce:
install MediaWiki 1.35.1 with ElasticSearch extension from git, run composer update and then run php extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php
you would get an error:
php extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php
indexing namespaces...
Indexing namespaces...done
content index...
Fetching Elasticsearch version...6.8.13...ok
Scanning available plugins...none
Picking analyzer...english
Inferring index identifier...mediawiki_content_first
Creating index...ok
Validating number of shards...ok
Validating replica range...ok
Validating shard allocation settings...done
Validating max shards per node...ok
Validating analyzers...ok
Validating mappings...
Validating mapping...different...corrected
Validating aliases...
Validating mediawiki_content alias...alias is free...[6e4df9b2173aee354e984b31] [no req] Error from line 451 of /var/www/html/w/extensions/Elastica/vendor/ruflin/elastica/lib/Elastica/Index.php: Class 'Elasticsearch\Endpoints\Indices\Aliases\Update' not found
Backtrace:
#0 /var/www/html/w/extensions/CirrusSearch/includes/Maintenance/Validators/SpecificAliasValidator.php(137): Elastica\Index->addAlias()
#1 /var/www/html/w/extensions/CirrusSearch/includes/Maintenance/Validators/SpecificAliasValidator.php(79): CirrusSearch\Maintenance\Validators\SpecificAliasValidator->updateFreeIndices()
#2 /var/www/html/w/extensions/CirrusSearch/includes/Maintenance/Validators/IndexAliasValidator.php(98): CirrusSearch\Maintenance\Validators\SpecificAliasValidator->updateIndices()
#3 /var/www/html/w/extensions/CirrusSearch/maintenance/UpdateOneSearchIndexConfig.php(458): CirrusSearch\Maintenance\Validators\IndexAliasValidator->validate()
#4 /var/www/html/w/extensions/CirrusSearch/maintenance/UpdateOneSearchIndexConfig.php(411): CirrusSearch\Maintenance\UpdateOneSearchIndexConfig->validateSpecificAlias()
#5 /var/www/html/w/extensions/CirrusSearch/maintenance/UpdateOneSearchIndexConfig.php(269): CirrusSearch\Maintenance\UpdateOneSearchIndexConfig->validateAlias()
#6 /var/www/html/w/extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php(61): CirrusSearch\Maintenance\UpdateOneSearchIndexConfig->execute()
#7 /var/www/html/w/maintenance/doMaintenance.php(107): CirrusSearch\Maintenance\UpdateSearchIndexConfig->execute()
#8 /var/www/html/w/extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php(70): require_once(string)
#9 {main}It is because composer update installs elasticsearch/elasticsearch version 6.8.0 (since 2021-03-01 18:54 UTC)
and compared to previous version 6.7.2 some classes were removed, see http://comparabl.com/upgrade/elasticsearch-elasticsearch/v6.7.2/v6.8.0
Elastica extension requires "ruflin/elastica": "6.1.1" which requires elasticsearch/elasticsearch: ^6.0 and composer installs elasticsearch-elasticsearch version 6.8.0.
I fixed it adding to composer.local.json file:
"require": {
"elasticsearch/elasticsearch": "6.7.2"
}It seems without the fix CirrusSearch works fine but you face the problem when you run the maintenance scripts.