Problem:
There was the following error related to ElasticSearch / OpenSearch while reindexing the catalogsearch
in Magento.
bin/magento indexer:reindex catalogsearch_fulltext
could not validate a connection to elasticsearch.
no alive nodes found in your cluster
Another similar error during catalogsearch
reindex:
bin/magento indexer:reindex catalogsearch_fulltext
Catalog Search index process error during indexation process:
{"error":{
"root_cause":[{
"type":"illegal_argument_exception",
"reason":"Types cannot be provided in put mapping requests,
unless the include_type_name parameter is set to true."
}],
"type":"illegal_argument_exception",
"reason":"Types cannot be provided in put mapping requests,
unless the include_type_name parameter is set to true."
},
"status":400}
Solution:
There can be different causes for this issue. Below are some of the solutions:
Check if ElasticSearch is working
curl http://localhost:9200
If you get proper JSON output then your ElasticSearch / OpenSearch is working fine.
{
"name" : "85f15ec78014",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "GOcHpOsvQH-t4gbC1jiRtQ",
"version" : {
"distribution" : "opensearch",
"number" : "1.2.4",
"build_type" : "tar",
"build_hash" : "e505b10357c03ae8d26d675172402f2f2144ef0f",
"build_date" : "2022-01-14T03:38:06.881862Z",
"build_snapshot" : false,
"lucene_version" : "8.10.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
If it sends a response like could not connect
, then ElasticSearch is not running on your machine. You might need to start it or install it if not installed.
sudo service elasticsearch start
Check Magento Configuration Settings
Check core_config_data
table
SELECT * FROM core_config_data WHERE path like '%elastic%’;
In older Magento versions, the ElasticSearch settings were saved with the following path:
catalog/search/elasticsearch*
MariaDB [magento]> SELECT * FROM core_config_data WHERE path like '%elastic%';
+-----------+---------+----------+----------------------------------------------------+-----------+---------------------+
| config_id | scope | scope_id | path | value | updated_at |
+-----------+---------+----------+----------------------------------------------------+-----------+---------------------+
| 3456 | default | 0 | catalog/search/elasticsearch_server_hostname | 127.0.0.1 | 2020-04-07 19:53:33 |
| 3459 | default | 0 | catalog/search/elasticsearch_server_port | 9200 | 2020-04-07 19:53:33 |
| 3462 | default | 0 | catalog/search/elasticsearch_index_prefix | magento2 | 2020-04-07 19:53:33 |
| 3465 | default | 0 | catalog/search/elasticsearch_enable_auth | 0 | 2020-04-07 19:53:33 |
| 3468 | default | 0 | catalog/search/elasticsearch_server_timeout | 15 | 2020-04-07 19:53:33 |
| 5222 | default | 0 | catalog/search/elasticsearch5_enable_auth | 0 | 2020-04-07 19:53:33 |
| 5225 | default | 0 | catalog/search/elasticsearch5_server_timeout | 15 | 2020-04-07 19:53:33 |
| 6404 | default | 0 | catalog/search/elasticsearch7_enable_auth | 0 | 2020-06-09 00:45:34 |
| 6407 | default | 0 | catalog/search/elasticsearch7_server_timeout | 15 | 2020-06-09 00:45:34 |
| 7232 | default | 0 | catalog/search/elasticsearch6_enable_auth | 0 | 2021-08-17 20:28:46 |
| 7233 | default | 0 | catalog/search/elasticsearch6_server_timeout | 15 | 2021-08-17 20:28:46 |
| 7234 | default | 0 | catalog/search/elasticsearch6_minimum_should_match | NULL | 2021-08-17 20:28:46 |
+-----------+---------+----------+----------------------------------------------------+-----------+---------------------+
14 rows in set (0.005 sec)
The ElasticServer hostname and port number settings for ElasticSearch 7 were missing in the core_config_data
table.
Add them back:
bin/magento config:set catalog/search/elasticsearch7_server_hostname 127.0.0.1
bin/magento config:set catalog/search/elasticsearch7_server_port 9200
Check ElasticSearch settings in app/etc/env.php
app/etc/env.php
'system' => [
'default' => [
'catalog' => [
'search' => [
'engine' => 'elasticsearch6',
'elasticsearch6_server_hostname' => 'opensearch',
'elasticsearch6_server_port' => '9200',
'elasticsearch6_index_prefix' => 'magento'
]
]
]
],
The Elasticsearch settings had elasticsearch6
in the value and key names.
Those need to be changed to elasticsearch7
.
'system' => [
'default' => [
'catalog' => [
'search' => [
'engine' => 'elasticsearch7',
'elasticsearch7_server_hostname' => 'opensearch',
'elasticsearch7_server_port' => '9200',
'elasticsearch7_index_prefix' => 'magento'
]
]
]
],
Now, import the settings:
bin/magento app:config:import
Refresh Cache
bin/magento cache:flush
Now, reindex catalogsearch should work fine:
bin/magento indexer:reindex catalogsearch_fulltext
Hope this helps. Thanks.