File: /var/www/vhost/disk-apps/magento.bikenow.co/vendor/magento/module-elasticsearch/etc/di.xml
<?xml version="1.0"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Elasticsearch\Model\Adapter\FieldMapperInterface" type="Magento\Elasticsearch\Model\Adapter\FieldMapper\FieldMapperResolver" />
<preference for="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\ResolverInterface" type="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\CompositeResolver" />
<preference for="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\ResolverInterface" type="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\CompositeResolver" />
<preference for="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\ResolverInterface" type="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\IndexResolver" />
<preference for="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\ConverterInterface" type="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\Converter" />
<preference for="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\ConverterInterface" type="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Converter" />
<preference for="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProviderInterface" type="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\CompositeFieldProvider" />
<preference for="Magento\Framework\Search\Dynamic\DataProviderInterface" type="Magento\Elasticsearch\SearchAdapter\Dynamic\DataProvider" />
<preference for="Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplierInterface" type="Magento\Elasticsearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplier"/>
<type name="Magento\Catalog\Model\Indexer\Category\Product\Action\Rows">
<plugin name="catalogsearchFulltextProductAssignment" type="Magento\Elasticsearch\Model\Indexer\Fulltext\Plugin\Category\Product\Action\Rows"/>
</type>
<type name="Magento\Elasticsearch\Model\Config">
<arguments>
<argument name="engineList" xsi:type="array">
<item name="elasticsearch5" xsi:type="string">elasticsearch5</item>
</argument>
</arguments>
</type>
<virtualType name="Magento\Elasticsearch\Model\Layer\Search\Context" type="Magento\Catalog\Model\Layer\Search\Context">
<arguments>
<argument name="collectionProvider" xsi:type="object">elasticsearchLayerSearchItemCollectionProvider</argument>
<argument name="stateKey" xsi:type="object">Magento\CatalogSearch\Model\Layer\Search\StateKey</argument>
</arguments>
</virtualType>
<type name="Magento\Catalog\Model\Layer\Search">
<arguments>
<argument name="context" xsi:type="object">Magento\Elasticsearch\Model\Layer\Search\Context</argument>
</arguments>
</type>
<virtualType name="Magento\Elasticsearch\Model\Layer\Category\Context" type="Magento\Catalog\Model\Layer\Category\Context">
<arguments>
<argument name="collectionProvider" xsi:type="object">elasticsearchLayerCategoryItemCollectionProvider</argument>
</arguments>
</virtualType>
<type name="Magento\Catalog\Model\Layer\Category">
<arguments>
<argument name="context" xsi:type="object">Magento\Elasticsearch\Model\Layer\Category\Context</argument>
</arguments>
</type>
<virtualType name="elasticsearchFulltextSearchCollection" type="Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection">
<arguments>
<argument name="searchRequestName" xsi:type="string">quick_search_container</argument>
<argument name="searchCriteriaResolverFactory" xsi:type="object">elasticsearchSearchCriteriaResolverFactory</argument>
<argument name="searchResultApplierFactory" xsi:type="object">elasticsearchSearchResultApplier\Factory</argument>
<argument name="totalRecordsResolverFactory" xsi:type="object">elasticsearchTotalRecordsResolver\Factory</argument>
<argument name="defaultFilterStrategyApplyChecker" xsi:type="object">Magento\Elasticsearch\Model\ResourceModel\Fulltext\Collection\DefaultFilterStrategyApplyChecker</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearchFulltextSearchCollectionFactory" type="Magento\CatalogSearch\Model\ResourceModel\Fulltext\SearchCollectionFactory">
<arguments>
<argument name="instanceName" xsi:type="string">elasticsearchFulltextSearchCollection</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearchLayerSearchItemCollectionProvider" type="Magento\Elasticsearch\Model\Layer\Search\ItemCollectionProvider">
<arguments>
<argument name="factories" xsi:type="array">
<item name="mysql" xsi:type="object">Magento\CatalogSearch\Model\ResourceModel\Fulltext\SearchCollectionFactory</item>
<item name="elasticsearch5" xsi:type="object">elasticsearchFulltextSearchCollectionFactory</item>
</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearchCategoryCollection" type="Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection">
<arguments>
<argument name="searchRequestName" xsi:type="string">catalog_view_container</argument>
<argument name="searchCriteriaResolverFactory" xsi:type="object">elasticsearchSearchCriteriaResolverFactory</argument>
<argument name="searchResultApplierFactory" xsi:type="object">elasticsearchSearchResultApplier\Factory</argument>
<argument name="totalRecordsResolverFactory" xsi:type="object">elasticsearchTotalRecordsResolver\Factory</argument>
<argument name="defaultFilterStrategyApplyChecker" xsi:type="object">Magento\Elasticsearch\Model\ResourceModel\Fulltext\Collection\DefaultFilterStrategyApplyChecker</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearchCategoryCollectionFactory" type="Magento\CatalogSearch\Model\ResourceModel\Fulltext\SearchCollectionFactory">
<arguments>
<argument name="instanceName" xsi:type="string">elasticsearchCategoryCollection</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearchLayerCategoryItemCollectionProvider" type="Magento\Elasticsearch\Model\Layer\Category\ItemCollectionProvider">
<arguments>
<argument name="factories" xsi:type="array">
<item name="mysql" xsi:type="object">Magento\CatalogSearch\Model\ResourceModel\Fulltext\CollectionFactory</item>
<item name="elasticsearch5" xsi:type="object">elasticsearchCategoryCollectionFactory</item>
</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearchAdvancedCollection" type="Magento\CatalogSearch\Model\ResourceModel\Advanced\Collection">
<arguments>
<argument name="searchRequestName" xsi:type="string">advanced_search_container</argument>
<argument name="searchCriteriaResolverFactory" xsi:type="object">elasticsearchSearchCriteriaResolverFactory</argument>
<argument name="searchResultApplierFactory" xsi:type="object">elasticsearchSearchResultApplier\Factory</argument>
<argument name="totalRecordsResolverFactory" xsi:type="object">elasticsearchTotalRecordsResolver\Factory</argument>
<argument name="defaultFilterStrategyApplyChecker" xsi:type="object">Magento\Elasticsearch\Model\ResourceModel\Fulltext\Collection\DefaultFilterStrategyApplyChecker</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearchAdvancedCollectionFactory" type="Magento\CatalogSearch\Model\ResourceModel\Advanced\CollectionFactory">
<arguments>
<argument name="instanceName" xsi:type="string">elasticsearchAdvancedCollection</argument>
</arguments>
</virtualType>
<type name="Magento\CatalogSearch\Model\Search\ItemCollectionProvider">
<arguments>
<argument name="factories" xsi:type="array">
<item name="elasticsearch5" xsi:type="object">elasticsearchAdvancedCollectionFactory</item>
</argument>
</arguments>
</type>
<type name="Magento\CatalogSearch\Model\Advanced\ProductCollectionPrepareStrategyProvider">
<arguments>
<argument name="strategies" xsi:type="array">
<item name="default" xsi:type="object">Magento\Elasticsearch\Model\Advanced\ProductCollectionPrepareStrategy</item>
<item name="elasticsearch5" xsi:type="object">Magento\Elasticsearch\Model\Advanced\ProductCollectionPrepareStrategy</item>
</argument>
</arguments>
</type>
<virtualType name="elasticsearchSearchCriteriaResolverFactory" type="Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchCriteriaResolverFactory">
<arguments>
<argument name="instanceName" xsi:type="string">Magento\Elasticsearch\Model\ResourceModel\Fulltext\Collection\SearchCriteriaResolver</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearchSearchResultApplier\Factory" type="Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplierFactory">
<arguments>
<argument name="instanceName" xsi:type="string">Magento\Elasticsearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplier</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearchTotalRecordsResolver\Factory" type="Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\TotalRecordsResolverFactory">
<arguments>
<argument name="instanceName" xsi:type="string">Magento\Elasticsearch\Model\ResourceModel\Fulltext\Collection\TotalRecordsResolver</argument>
</arguments>
</virtualType>
<type name="Magento\Elasticsearch\Model\Adapter\FieldMapper\FieldMapperResolver">
<arguments>
<argument name="fieldMappers" xsi:type="array">
<item name="product" xsi:type="string">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\ProductFieldMapperProxy</item>
</argument>
</arguments>
</type>
<virtualType name="additionalFieldsProviderForElasticsearch" type="Magento\AdvancedSearch\Model\Adapter\DataMapper\AdditionalFieldsProvider">
<arguments>
<argument name="fieldsProviders" xsi:type="array">
<item name="categories" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\BatchDataMapper\CategoryFieldsProviderProxy</item>
<item name="prices" xsi:type="object">Magento\Elasticsearch\Model\Adapter\BatchDataMapper\PriceFieldsProvider</item>
</argument>
</arguments>
</virtualType>
<type name="Magento\Elasticsearch\Model\Adapter\BatchDataMapper\ProductDataMapper">
<arguments>
<argument name="additionalFieldsProvider" xsi:type="object">additionalFieldsProviderForElasticsearch</argument>
<argument name="filterableAttributeTypes" xsi:type="array">
<item name="boolean" xsi:type="string">boolean</item>
<item name="multiselect" xsi:type="string">multiselect</item>
<item name="select" xsi:type="string">select</item>
</argument>
</arguments>
</type>
<preference for="Magento\Elasticsearch\Model\Adapter\BatchDataMapperInterface" type="Magento\Elasticsearch\Model\Adapter\BatchDataMapper\DataMapperResolver" />
<type name="Magento\Elasticsearch\Model\Adapter\BatchDataMapper\DataMapperFactory">
<arguments>
<argument name="dataMappers" xsi:type="array">
<item name="product" xsi:type="string">Magento\Elasticsearch\Model\Adapter\BatchDataMapper\ProductDataMapper</item>
</argument>
</arguments>
</type>
<preference for="Magento\Elasticsearch\Model\Adapter\Index\BuilderInterface" type="Magento\Elasticsearch\Model\Adapter\Index\Builder" />
<preference for="Magento\Elasticsearch\Model\Adapter\Index\Config\EsConfigInterface" type="Magento\Elasticsearch\Model\Adapter\Index\Config\EsConfig" />
<type name="Magento\Search\Model\Adminhtml\System\Config\Source\Engine">
<arguments>
<argument name="engines" xsi:type="array">
<item sortOrder="10" name="elasticsearch5" xsi:type="string">Elasticsearch 5.0+ (Deprecated)</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\Elasticsearch5\Model\Adapter\BatchDataMapper\CategoryFieldsProviderProxy">
<arguments>
<argument name="categoryFieldsProviders" xsi:type="array">
<item name="elasticsearch5" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\BatchDataMapper\CategoryFieldsProvider</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\ProductFieldMapperProxy">
<arguments>
<argument name="productFieldMappers" xsi:type="array">
<item name="elasticsearch5" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\ProductFieldMapper</item>
</argument>
</arguments>
</type>
<type name="Magento\AdvancedSearch\Model\Client\ClientResolver">
<arguments>
<argument name="clientFactories" xsi:type="array">
<item name="elasticsearch5" xsi:type="string">\Magento\Elasticsearch\Elasticsearch5\Model\Client\ElasticsearchFactory</item>
</argument>
<argument name="clientOptions" xsi:type="array">
<item name="elasticsearch5" xsi:type="string">Magento\Elasticsearch\Model\Config</item>
</argument>
</arguments>
</type>
<type name="Magento\CatalogSearch\Model\Indexer\IndexerHandlerFactory">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="elasticsearch5" xsi:type="string">Magento\Elasticsearch\Model\Indexer\IndexerHandler</item>
</argument>
</arguments>
</type>
<type name="Magento\CatalogSearch\Model\Indexer\IndexStructureFactory">
<arguments>
<argument name="structures" xsi:type="array">
<item name="elasticsearch5" xsi:type="string">Magento\Elasticsearch\Model\Indexer\IndexStructure</item>
</argument>
</arguments>
</type>
<type name="Magento\CatalogSearch\Model\ResourceModel\EngineProvider">
<arguments>
<argument name="engines" xsi:type="array">
<item name="elasticsearch5" xsi:type="string">Magento\Elasticsearch\Model\ResourceModel\Engine</item>
</argument>
</arguments>
</type>
<type name="Magento\Search\Model\AdapterFactory">
<arguments>
<argument name="adapters" xsi:type="array">
<item name="elasticsearch5" xsi:type="string">Magento\Elasticsearch\Elasticsearch5\SearchAdapter\Adapter</item>
</argument>
</arguments>
</type>
<type name="Magento\Search\Model\EngineResolver">
<arguments>
<argument name="engines" xsi:type="array">
<item name="elasticsearch5" xsi:type="string">elasticsearch5</item>
</argument>
<argument name="defaultEngine" xsi:type="string">elasticsearch5</argument>
</arguments>
</type>
<virtualType name="Magento\Elasticsearch\SearchAdapter\ProductEntityMetadata" type="Magento\Framework\Search\EntityMetadata">
<arguments>
<argument name="entityId" xsi:type="string">_id</argument>
</arguments>
</virtualType>
<type name="Magento\Elasticsearch\SearchAdapter\DocumentFactory">
<arguments>
<argument name="entityMetadata" xsi:type="object">Magento\Elasticsearch\SearchAdapter\ProductEntityMetadata</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\SearchAdapter\ConnectionManager">
<arguments>
<argument name="clientFactory" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Client\ClientFactoryProxy</argument>
<argument name="clientConfig" xsi:type="object">Magento\Elasticsearch\Model\Config</argument>
</arguments>
</type>
<virtualType name="Magento\Elasticsearch\Elasticsearch5\SearchAdapter\ConnectionManager" type="Magento\Elasticsearch\SearchAdapter\ConnectionManager">
<arguments>
<argument name="clientFactory" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Client\ClientFactoryProxy</argument>
<argument name="clientConfig" xsi:type="object">Magento\Elasticsearch\Model\Config</argument>
</arguments>
</virtualType>
<virtualType name="Magento\Elasticsearch\Elasticsearch5\Model\Client\ElasticsearchFactory" type="Magento\AdvancedSearch\Model\Client\ClientFactory">
<arguments>
<argument name="clientClass" xsi:type="string">Magento\Elasticsearch\Elasticsearch5\Model\Client\Elasticsearch</argument>
</arguments>
</virtualType>
<type name="Magento\Elasticsearch\Elasticsearch5\Model\Client\ClientFactoryProxy">
<arguments>
<argument name="clientFactories" xsi:type="array">
<item name="elasticsearch5" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Client\ElasticsearchFactory</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\Elasticsearch5\SearchAdapter\Adapter">
<arguments>
<argument name="connectionManager" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\SearchAdapter\ConnectionManager</argument>
</arguments>
</type>
<type name="Magento\Framework\Search\Dynamic\IntervalFactory">
<arguments>
<argument name="intervals" xsi:type="array">
<item name="elasticsearch5" xsi:type="string">Magento\Elasticsearch\Elasticsearch5\SearchAdapter\Aggregation\Interval</item>
</argument>
</arguments>
</type>
<type name="Magento\Framework\Search\Dynamic\DataProviderFactory">
<arguments>
<argument name="dataProviders" xsi:type="array">
<item name="elasticsearch5" xsi:type="string">Magento\Elasticsearch\SearchAdapter\Dynamic\DataProvider</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\SearchAdapter\Aggregation\Builder">
<arguments>
<argument name="dataProviderContainer" xsi:type="array">
<item name="catalogsearch_fulltext" xsi:type="object">Magento\Elasticsearch\SearchAdapter\Dynamic\DataProvider</item>
</argument>
<argument name="aggregationContainer" xsi:type="array">
<item name="termBucket" xsi:type="object">Magento\Elasticsearch\SearchAdapter\Aggregation\Builder\Term</item>
<item name="dynamicBucket" xsi:type="object">Magento\Elasticsearch\SearchAdapter\Aggregation\Builder\Dynamic</item>
</argument>
</arguments>
</type>
<type name="Magento\Framework\Indexer\Config\DependencyInfoProvider">
<plugin name="indexerDependencyUpdaterPlugin" type="Magento\Elasticsearch\Model\Indexer\Plugin\DependencyUpdaterPlugin"/>
</type>
<type name="Magento\Elasticsearch\SearchAdapter\Query\Builder\Match">
<arguments>
<argument name="preprocessorContainer" xsi:type="array">
<item name="stopwordsPreprocessor" xsi:type="object">Magento\Elasticsearch\SearchAdapter\Query\Preprocessor\Stopwords</item>
<item name="synonymsPreprocessor" xsi:type="object">Magento\Search\Adapter\Query\Preprocessor\Synonyms</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\SearchAdapter\Query\Preprocessor\Stopwords">
<arguments>
<argument name="stopwordsModule" xsi:type="string">Magento_Elasticsearch</argument>
<argument name="stopwordsDirectory" xsi:type="string">stopwords</argument>
</arguments>
</type>
<!-- @api -->
<virtualType name="Magento\Elasticsearch\Model\Adapter\Index\Config\Reader" type="Magento\Framework\Config\Reader\Filesystem">
<arguments>
<argument name="converter" xsi:type="object">Magento\Elasticsearch\Model\Adapter\Index\Config\Converter</argument>
<argument name="schemaLocator" xsi:type="object">Magento\Elasticsearch\Model\Adapter\Index\Config\SchemaLocator</argument>
<argument name="fileName" xsi:type="string">esconfig.xml</argument>
</arguments>
</virtualType>
<type name="Magento\Elasticsearch\Model\Adapter\Index\Config\EsConfig">
<arguments>
<argument name="reader" xsi:type="object">Magento\Elasticsearch\Model\Adapter\Index\Config\Reader</argument>
<argument name="cacheId" xsi:type="string">elasticsearch_index_config</argument>
</arguments>
</type>
<type name="Magento\AdvancedSearch\Model\SuggestedQueries">
<arguments>
<argument name="data" xsi:type="array">
<item name="elasticsearch5" xsi:type="string">Magento\Elasticsearch\Model\DataProvider\Suggestions</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\SearchAdapter\Dynamic\DataProvider">
<arguments>
<argument name="indexerId" xsi:type="const">\Magento\CatalogSearch\Model\Indexer\Fulltext::INDEXER_ID</argument>
</arguments>
</type>
<type name="Magento\Config\Model\Config\TypePool">
<arguments>
<argument name="sensitive" xsi:type="array">
<item name="catalog/search/elasticsearch5_password" xsi:type="string">1</item>
<item name="catalog/search/elasticsearch5_server_hostname" xsi:type="string">1</item>
<item name="catalog/search/elasticsearch5_username" xsi:type="string">1</item>
</argument>
<argument name="environment" xsi:type="array">
<item name="catalog/search/elasticsearch5_enable_auth" xsi:type="string">1</item>
<item name="catalog/search/elasticsearch5_index_prefix" xsi:type="string">1</item>
<item name="catalog/search/elasticsearch5_password" xsi:type="string">1</item>
<item name="catalog/search/elasticsearch5_server_hostname" xsi:type="string">1</item>
<item name="catalog/search/elasticsearch5_server_port" xsi:type="string">1</item>
<item name="catalog/search/elasticsearch5_username" xsi:type="string">1</item>
<item name="catalog/search/elasticsearch5_server_timeout" xsi:type="string">1</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\Elasticsearch5\Model\Adapter\BatchDataMapper\CategoryFieldsProvider">
<arguments>
<argument name="fieldNameResolver" xsi:type="object">elasticsearch5FieldNameResolver</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\CompositeResolver">
<arguments>
<argument name="items" xsi:type="array">
<item name="notEav" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\NotEavAttribute</item>
<item name="special" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\SpecialAttribute</item>
<item name="price" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\Price</item>
<item name="categoryName" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\CategoryName</item>
<item name="position" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\Position</item>
<item name="default" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\DefaultResolver</item>
</argument>
</arguments>
</type>
<virtualType name="elasticsearch5FieldNameResolver" type="\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\CompositeResolver">
<arguments>
<argument name="items" xsi:type="array">
<item name="notEav" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\NotEavAttribute</item>
<item name="special" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\SpecialAttribute</item>
<item name="price" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\Price</item>
<item name="categoryName" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\CategoryName</item>
<item name="position" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\Position</item>
<item name="default" xsi:type="object">elasticsearch5FieldNameDefaultResolver</item>
</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearch5FieldNameDefaultResolver" type="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldName\Resolver\DefaultResolver">
<arguments>
<argument name="fieldTypeResolver" xsi:type="object">\Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\CompositeResolver</argument>
<argument name="fieldTypeConverter" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Converter</argument>
</arguments>
</virtualType>
<type name="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\CompositeResolver">
<arguments>
<argument name="items" xsi:type="array">
<item name="integer" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\IntegerType</item>
<item name="datetime" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\DateTimeType</item>
<item name="float" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\FloatType</item>
<item name="default" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\DefaultResolver</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\CompositeResolver">
<arguments>
<argument name="items" xsi:type="array">
<item name="keyword" xsi:type="object">\Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\KeywordType</item>
<item name="integer" xsi:type="object">\Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\IntegerType</item>
<item name="datetime" xsi:type="object">elasticsearch5FieldTypeDateTimeResolver</item>
<item name="float" xsi:type="object">elasticsearch5FieldTypeFloatResolver</item>
<item name="default" xsi:type="object">elasticsearch5FieldTypeDefaultResolver</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\CompositeFieldProvider">
<arguments>
<argument name="providers" xsi:type="array">
<item name="static" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\StaticField</item>
<item name="dynamic" xsi:type="object">\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\DynamicField</item>
</argument>
</arguments>
</type>
<virtualType name="elasticsearch5FieldProvider" type="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\CompositeFieldProvider">
<arguments>
<argument name="providers" xsi:type="array">
<item name="static" xsi:type="object">elasticsearch5StaticFieldProvider</item>
<item name="dynamic" xsi:type="object">elasticsearch5DynamicFieldProvider</item>
</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearch5StaticFieldProvider" type="\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\StaticField">
<arguments>
<argument name="fieldTypeConverter" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Converter</argument>
<argument name="indexTypeConverter" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\Converter</argument>
<argument name="fieldIndexResolver" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\IndexResolver</argument>
<argument name="fieldTypeResolver" xsi:type="object">\Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\CompositeResolver</argument>
<argument name="fieldNameResolver" xsi:type="object">elasticsearch5FieldNameResolver</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearch5DynamicFieldProvider" type="\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\DynamicField">
<arguments>
<argument name="fieldTypeConverter" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Converter</argument>
<argument name="indexTypeConverter" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\Converter</argument>
</arguments>
</virtualType>
<type name="Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\KeywordType">
<arguments>
<argument name="fieldTypeConverter" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Converter</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\IntegerType">
<arguments>
<argument name="fieldTypeConverter" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Converter</argument>
</arguments>
</type>
<virtualType name="elasticsearch5FieldTypeDateTimeResolver" type="\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\DateTimeType">
<arguments>
<argument name="fieldTypeConverter" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Converter</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearch5FieldTypeFloatResolver" type="\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\FloatType">
<arguments>
<argument name="fieldTypeConverter" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Converter</argument>
</arguments>
</virtualType>
<virtualType name="elasticsearch5FieldTypeDefaultResolver" type="\Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\DefaultResolver">
<arguments>
<argument name="fieldTypeConverter" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Converter</argument>
</arguments>
</virtualType>
<type name="Magento\Elasticsearch\Model\Adapter\Elasticsearch">
<arguments>
<argument name="staticFieldProvider" xsi:type="object">elasticsearch5StaticFieldProvider</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\ProductFieldMapper">
<arguments>
<argument name="fieldProvider" xsi:type="object">elasticsearch5FieldProvider</argument>
<argument name="fieldNameResolver" xsi:type="object">elasticsearch5FieldNameResolver</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\IndexResolver">
<arguments>
<argument name="converter" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldIndex\Converter</argument>
<argument name="fieldTypeConverter" xsi:type="object">Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Converter</argument>
<argument name="fieldTypeResolver" xsi:type="object">\Magento\Elasticsearch\Elasticsearch5\Model\Adapter\FieldMapper\Product\FieldProvider\FieldType\Resolver\CompositeResolver</argument>
</arguments>
</type>
<type name="Magento\Search\Model\Search\PageSizeProvider">
<arguments>
<argument name="pageSizeBySearchEngine" xsi:type="array">
<item name="elasticsearch5" xsi:type="number">10000</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\SearchAdapter\Query\ValueTransformerPool">
<arguments>
<argument name="valueTransformers" xsi:type="array">
<item name="default" xsi:type="object">Magento\Elasticsearch\SearchAdapter\Query\ValueTransformer\TextTransformer</item>
<item name="date" xsi:type="object">Magento\Elasticsearch\SearchAdapter\Query\ValueTransformer\DateTransformer</item>
<item name="float" xsi:type="object">Magento\Elasticsearch\SearchAdapter\Query\ValueTransformer\FloatTransformer</item>
<item name="integer" xsi:type="object">Magento\Elasticsearch\SearchAdapter\Query\ValueTransformer\IntegerTransformer</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\SearchAdapter\Query\ValueTransformer\TextTransformer">
<arguments>
<argument name="preprocessors" xsi:type="array">
<item name="stopwordsPreprocessor" xsi:type="object">Magento\Elasticsearch\SearchAdapter\Query\Preprocessor\Stopwords</item>
<item name="synonymsPreprocessor" xsi:type="object">Magento\Search\Adapter\Query\Preprocessor\Synonyms</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\Model\Adapter\FieldMapper\Product\FieldProvider\StaticField">
<arguments>
<argument name="excludedAttributes" xsi:type="array">
<item name="price" xsi:type="string">price</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\Setup\InstallConfig">
<arguments>
<argument name="searchConfigMapping" xsi:type="array">
<item name="elasticsearch-host" xsi:type="string">elasticsearch5_server_hostname</item>
<item name="elasticsearch-port" xsi:type="string">elasticsearch5_server_port</item>
<item name="elasticsearch-timeout" xsi:type="string">elasticsearch5_server_timeout</item>
<item name="elasticsearch-index-prefix" xsi:type="string">elasticsearch5_index_prefix</item>
<item name="elasticsearch-enable-auth" xsi:type="string">elasticsearch5_enable_auth</item>
<item name="elasticsearch-username" xsi:type="string">elasticsearch5_username</item>
<item name="elasticsearch-password" xsi:type="string">elasticsearch5_password</item>
</argument>
</arguments>
</type>
<type name="Magento\Search\Setup\CompositeInstallConfig">
<arguments>
<argument name="installConfigList" xsi:type="array">
<item name="elasticsearch5" xsi:type="object">Magento\Elasticsearch\Setup\InstallConfig</item>
</argument>
</arguments>
</type>
<type name="Magento\Search\Model\SearchEngine\Validator">
<arguments>
<argument name="excludedEngineList" xsi:type="array">
<item name="elasticsearch" xsi:type="string">Elasticsearch 2</item>
</argument>
<argument name="engineValidators" xsi:type="array">
<item name="elasticsearch5" xsi:type="object">Magento\Elasticsearch\Setup\Validator</item>
</argument>
</arguments>
</type>
<type name="Magento\Elasticsearch\Model\Indexer\Fulltext\Plugin\Category\Product\Attribute">
<arguments>
<argument name="dimensionProvider" xsi:type="object" shared="false">Magento\Store\Model\StoreDimensionProvider</argument>
</arguments>
</type>
<type name="Magento\Catalog\Model\ResourceModel\Attribute">
<plugin name="updateElasticsearchIndexerMapping" type="Magento\Elasticsearch\Model\Indexer\Fulltext\Plugin\Category\Product\Attribute"/>
</type>
</config>