Skip to content

Commit e3fef2b

Browse files
committed
MC-31098: Add support of Elasticsearch7 to codebase
1 parent 8f5ca67 commit e3fef2b

File tree

14 files changed

+59
-60
lines changed

14 files changed

+59
-60
lines changed

app/code/Magento/Elasticsearch/Elasticsearch5/Model/Client/Elasticsearch.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
/**
1212
* Elasticsearch client
1313
*
14-
* @deprecated the Elasticsearch doesn't supported due to EOL
14+
* @deprecated the Elasticsearch 5 doesn't supported due to EOL
1515
*/
1616
class Elasticsearch implements ClientInterface
1717
{

app/code/Magento/Elasticsearch/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"magento/module-store": "*",
1313
"magento/module-catalog-inventory": "*",
1414
"magento/framework": "*",
15-
"elasticsearch/elasticsearch": "~2.0||~5.1||~6.1||~7.1"
15+
"elasticsearch/elasticsearch": "~2.0||~5.1||~6.1||~7.6"
1616
},
1717
"suggest": {
1818
"magento/module-config": "*"

app/code/Magento/Elasticsearch6/Test/Unit/Model/Client/ElasticsearchTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use Magento\Elasticsearch6\Model\Client\Elasticsearch;
1212

1313
/**
14-
* Class ElasticsearchTest to test ElasticsearchClient
14+
* Class ElasticsearchTest to test Elasticsearch 6
1515
*/
1616
class ElasticsearchTest extends \PHPUnit\Framework\TestCase
1717
{

app/code/Magento/Elasticsearch6/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"magento/module-catalog-search": "*",
99
"magento/module-search": "*",
1010
"magento/module-elasticsearch": "*",
11-
"elasticsearch/elasticsearch": "~2.0||~5.1||~6.1||~7.1"
11+
"elasticsearch/elasticsearch": "~2.0||~5.1||~6.1||~7.6"
1212
},
1313
"suggest": {
1414
"magento/module-config": "*"

app/code/Magento/Elasticsearch7/Model/Adapter/FieldMapper/Product/FieldProvider/FieldName/Resolver/DefaultResolver.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,24 @@
99

1010
use Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\AttributeAdapter;
1111
use Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\ResolverInterface;
12-
use Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\DefaultResolver as Base;
12+
use Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\DefaultResolver
13+
as DefaultFiledNameResolver;
1314

1415
/**
1516
* Default name resolver for Elasticsearch 7
1617
*/
1718
class DefaultResolver implements ResolverInterface
1819
{
1920
/**
20-
* @var Base
21+
* @var DefaultFiledNameResolver
2122
*/
2223
private $baseResolver;
2324

2425
/**
2526
* DefaultResolver constructor.
26-
* @param Base $baseResolver
27+
* @param DefaultFiledNameResolver $baseResolver
2728
*/
28-
public function __construct(Base $baseResolver)
29+
public function __construct(DefaultFiledNameResolver $baseResolver)
2930
{
3031
$this->baseResolver = $baseResolver;
3132
}

app/code/Magento/Elasticsearch7/Model/Client/Elasticsearch.php

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,6 @@ public function __construct(
5050
);
5151
}
5252

53-
if (!($elasticsearchClient instanceof \Elasticsearch\Client)) {
54-
$config = $this->buildESConfig($options);
55-
$elasticsearchClient = \Elasticsearch\ClientBuilder::fromConfig($config, true);
56-
}
5753
$this->client[getmypid()] = $elasticsearchClient;
5854
$this->clientOptions = $options;
5955
}
@@ -64,7 +60,7 @@ public function __construct(
6460
* @param array $query
6561
* @return array
6662
*/
67-
public function suggest($query) : array
63+
public function suggest(array $query) : array
6864
{
6965
return $this->getElasticsearchClient()->suggest($query);
7066
}
@@ -74,10 +70,10 @@ public function suggest($query) : array
7470
*
7571
* @return \Elasticsearch\Client
7672
*/
77-
private function getElasticsearchClient()
73+
private function getElasticsearchClient(): \Elasticsearch\Client
7874
{
7975
$pid = getmypid();
80-
if (!isset($this->client[$pid])) {
76+
if (!isset($this->client[$pid]) || !($this->client[$pid] instanceof \Elasticsearch\Client)) {
8177
$config = $this->buildESConfig($this->clientOptions);
8278
$this->client[$pid] = \Elasticsearch\ClientBuilder::fromConfig($config, true);
8379
}
@@ -115,7 +111,7 @@ public function testConnection() : bool
115111
* @param array $options
116112
* @return array
117113
*/
118-
private function buildESConfig($options = []) : array
114+
private function buildESConfig(array $options = []) : array
119115
{
120116
$hostname = preg_replace('/http[s]?:\/\//i', '', $options['hostname']);
121117
// @codingStandardsIgnoreStart
@@ -148,7 +144,7 @@ private function buildESConfig($options = []) : array
148144
* @param array $query
149145
* @return void
150146
*/
151-
public function bulkQuery($query)
147+
public function bulkQuery(array $query)
152148
{
153149
$this->getElasticsearchClient()->bulk($query);
154150
}
@@ -160,7 +156,7 @@ public function bulkQuery($query)
160156
* @param array $settings
161157
* @return void
162158
*/
163-
public function createIndex($index, $settings)
159+
public function createIndex(string $index, array $settings)
164160
{
165161
$this->getElasticsearchClient()->indices()->create(
166162
[
@@ -176,7 +172,7 @@ public function createIndex($index, $settings)
176172
* @param string $index
177173
* @return void
178174
*/
179-
public function deleteIndex($index)
175+
public function deleteIndex(string $index)
180176
{
181177
$this->getElasticsearchClient()->indices()->delete(['index' => $index]);
182178
}
@@ -187,10 +183,10 @@ public function deleteIndex($index)
187183
* @param string $index
188184
* @return bool
189185
*/
190-
public function isEmptyIndex($index) : bool
186+
public function isEmptyIndex(string $index) : bool
191187
{
192188
$stats = $this->getElasticsearchClient()->indices()->stats(['index' => $index, 'metric' => 'docs']);
193-
if ($stats['indices'][$index]['primaries']['docs']['count'] == 0) {
189+
if ($stats['indices'][$index]['primaries']['docs']['count'] === 0) {
194190
return true;
195191
}
196192
return false;
@@ -204,9 +200,13 @@ public function isEmptyIndex($index) : bool
204200
* @param string $oldIndex
205201
* @return void
206202
*/
207-
public function updateAlias($alias, $newIndex, $oldIndex = '')
203+
public function updateAlias(string $alias, string $newIndex, string $oldIndex = '')
208204
{
209-
$params['body'] = ['actions' => []];
205+
$params = [
206+
'body' => [
207+
'actions' => []
208+
]
209+
];
210210
if ($oldIndex) {
211211
$params['body']['actions'][] = ['remove' => ['alias' => $alias, 'index' => $oldIndex]];
212212
}
@@ -223,7 +223,7 @@ public function updateAlias($alias, $newIndex, $oldIndex = '')
223223
* @param string $index
224224
* @return bool
225225
*/
226-
public function indexExists($index) : bool
226+
public function indexExists(string $index) : bool
227227
{
228228
return $this->getElasticsearchClient()->indices()->exists(['index' => $index]);
229229
}
@@ -235,7 +235,7 @@ public function indexExists($index) : bool
235235
* @param string $index
236236
* @return bool
237237
*/
238-
public function existsAlias($alias, $index = '') : bool
238+
public function existsAlias(string $alias, string $index = '') : bool
239239
{
240240
$params = ['name' => $alias];
241241
if ($index) {
@@ -250,7 +250,7 @@ public function existsAlias($alias, $index = '') : bool
250250
* @param string $alias
251251
* @return array
252252
*/
253-
public function getAlias($alias) : array
253+
public function getAlias(string $alias) : array
254254
{
255255
return $this->getElasticsearchClient()->indices()->getAlias(['name' => $alias]);
256256
}
@@ -263,7 +263,7 @@ public function getAlias($alias) : array
263263
* @param string $entityType
264264
* @return void
265265
*/
266-
public function addFieldsMapping(array $fields, $index, $entityType)
266+
public function addFieldsMapping(array $fields, string $index, string $entityType)
267267
{
268268
$params = [
269269
'index' => $index,
@@ -326,7 +326,7 @@ public function addFieldsMapping(array $fields, $index, $entityType)
326326
* @param array $query
327327
* @return array
328328
*/
329-
public function query($query) : array
329+
public function query(array $query) : array
330330
{
331331
return $this->getElasticsearchClient()->search($query);
332332
}
@@ -338,7 +338,7 @@ public function query($query) : array
338338
* @param string $entityType
339339
* @return void
340340
*/
341-
public function deleteMapping($index, $entityType)
341+
public function deleteMapping(string $index, string $entityType)
342342
{
343343
$this->getElasticsearchClient()->indices()->deleteMapping(
344344
[

app/code/Magento/Elasticsearch7/SearchAdapter/Mapper.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
/**
1414
* Elasticsearch7 mapper class
1515
*/
16-
class Mapper extends \Magento\Elasticsearch\Elasticsearch5\SearchAdapter\Mapper
16+
class Mapper
1717
{
1818
/**
1919
* @var \Magento\Elasticsearch\Elasticsearch5\SearchAdapter\Mapper

app/code/Magento/Elasticsearch7/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"magento/module-catalog-search": "*",
99
"magento/module-search": "*",
1010
"magento/module-elasticsearch": "*",
11-
"elasticsearch/elasticsearch": "~2.0||~5.1||~6.1||~7.1 "
11+
"elasticsearch/elasticsearch": "~2.0||~5.1||~6.1||~7.6 "
1212
},
1313
"suggest": {
1414
"magento/module-config": "*"

app/code/Magento/Elasticsearch7/etc/di.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@
139139
</argument>
140140
</arguments>
141141
</type>
142-
143-
<virtualType name="elasticsearch7FieldNameResolver" type="\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\CompositeResolver">
142+
<!--todo rename!!!-->
143+
<virtualType name="\Magento\Elasticsearch7\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\CompositeResolver" type="\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\CompositeResolver">
144144
<arguments>
145145
<argument name="items" xsi:type="array">
146146
<item name="notEav" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\NotEavAttribute</item>
@@ -157,7 +157,7 @@
157157
type="Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\ProductFieldMapper">
158158
<arguments>
159159
<argument name="fieldProvider" xsi:type="object">elasticsearch5FieldProvider</argument>
160-
<argument name="fieldNameResolver" xsi:type="object">elasticsearch7FieldNameResolver</argument>
160+
<argument name="fieldNameResolver" xsi:type="object">\Magento\Elasticsearch7\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\CompositeResolver</argument>
161161
</arguments>
162162
</virtualType>
163163

app/code/Magento/Indexer/Console/Command/IndexerReindexCommand.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
9898
$output->writeln($e->getMessage());
9999
} catch (\Exception $e) {
100100
$output->writeln($indexer->getTitle() . ' indexer process unknown error:');
101+
$output->writeln([$e->getMessage()]);
101102
}
102103
}
103104
return $returnValue;

0 commit comments

Comments
 (0)