diff --git a/_includes/checking-elasticsearch-indices-via-a-cli.md b/_includes/checking-elasticsearch-indices-via-a-cli.md index 57908f86c99..03cd8293c3d 100644 --- a/_includes/checking-elasticsearch-indices-via-a-cli.md +++ b/_includes/checking-elasticsearch-indices-via-a-cli.md @@ -1,10 +1,10 @@ -### Check ElasticSearch connection details +### Check Elasticsearch connection details Check `SPRYKER_SEARCH_HOST ` and `SPRYKER_SEARCH_PORT` values as follows: {% include checking-a-service-connection-configuration.md %} -### Check the health and status of ElasticSearch indices +### Check the health and status of Elasticsearch indices 1. Connect to the environment’s VPN. diff --git a/_includes/checking-elasticsearch-status-via-aws-management-console.md b/_includes/checking-elasticsearch-status-via-aws-management-console.md index 7780884d2d6..865cbcd405d 100644 --- a/_includes/checking-elasticsearch-status-via-aws-management-console.md +++ b/_includes/checking-elasticsearch-status-via-aws-management-console.md @@ -1,8 +1,8 @@ 1. In the AWS Management Console, go to **Services** > **Amazon OpenSearch Service**. 2. Select the desired environment. 3. On the page of the environment, check the following: - - *Domain status:* If the status is *Active*, ElasticSearch is running. - - *Cluster health*: If the status is *Green* or *Yellow*, ElasticSearch works properly. + - *Domain status:* If the status is *Active*, Elasticsearch is running. + - *Cluster health*: If the status is *Green* or *Yellow*, Elasticsearch works properly. 4. Below the *General information* pane, switch to the **Cluster health** tab. diff --git a/_includes/pbc/all/install-features/202410.0/install-the-product-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-product-feature.md index 6b740a2ed5a..5a8d801af89 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-product-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-product-feature.md @@ -166,7 +166,7 @@ class ProductPageSearchConfig extends SprykerProductPageSearchConfig {% info_block warningBox "Verification" %} -Make sure that abstract products that can be added to cart have the `add_to_cart_sku` field in the ElasticSearch document. +Make sure that abstract products that can be added to cart have the `add_to_cart_sku` field in the Elasticsearch document. {% endinfo_block %} diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-productpagesearch-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-productpagesearch-module.md index 4a2b52cb2cc..8ea6ea4c589 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-productpagesearch-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-productpagesearch-module.md @@ -59,7 +59,7 @@ Spryker\Zed\ProductPageSearch\Communication\Plugin\Search\ProductPageMapPlugin ## Upgrading from version 2.* to version 3.* -`ProductPageSearch` 3.0.0 got separate search index for Concrete Products. It includes database table and ElasticSearch index. +`ProductPageSearch` 3.0.0 got separate search index for Concrete Products. It includes database table and Elasticsearch index. *Estimated migration time: ~2h* @@ -83,7 +83,7 @@ vendor/bin/console transfer:generate vendor/bin/console search:setup ``` -4. Sync concrete products data with ElasticSearch: +4. Sync concrete products data with Elasticsearch: ```bash vendor/bin/console data:import:product-concrete diff --git a/docs/ca/dev/create-and-restore-database-backups.md b/docs/ca/dev/create-and-restore-database-backups.md index c147b130478..46743e33c9f 100644 --- a/docs/ca/dev/create-and-restore-database-backups.md +++ b/docs/ca/dev/create-and-restore-database-backups.md @@ -197,7 +197,7 @@ This opens the **Jobs** page where you can see the progress of restoration. Wait Restored DB is created and modified. -### Re-sync data from the restored database to ElasticSearch and Redis +### Re-sync data from the restored database to Elasticsearch and Redis 1. Connect to OpenVPN. diff --git a/docs/ca/dev/monitoring-issues-and-informing-about-alerts.md b/docs/ca/dev/monitoring-issues-and-informing-about-alerts.md index cfbfbb1be84..339494a7443 100644 --- a/docs/ca/dev/monitoring-issues-and-informing-about-alerts.md +++ b/docs/ca/dev/monitoring-issues-and-informing-about-alerts.md @@ -50,7 +50,7 @@ The following alerts are configured by default for all environments. -### ElasticSearch +### Elasticsearch
diff --git a/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-an-unavailable-zed.md b/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-an-unavailable-zed.md index c6b5c59f43d..b7e570d0492 100644 --- a/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-an-unavailable-zed.md +++ b/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-an-unavailable-zed.md @@ -8,7 +8,7 @@ redirect_from: --- Zed didn't restart after a deployment or you can't access it. -To troubleshoot this issue, you need to go through all the stages of information flow. The default information flow is: Front end > Gateway(optional) > Zed > ElastiCache, ElasticSearch, RMQ, and RDS. +To troubleshoot this issue, you need to go through all the stages of information flow. The default information flow is: Front end > Gateway(optional) > Zed > ElastiCache, Elasticsearch, RMQ, and RDS. ![information flow diagram](https://spryker.s3.eu-central-1.amazonaws.com/cloud-docs/_includes/informatin-flow-diagram.png) @@ -85,15 +85,15 @@ To check Redis system information via a CLI, do the following. {% include checking-redis-system-information-via-a-cli.md %} -## 6. Check ElasticSearch status +## 6. Check Elasticsearch status -Check ElasticSearch status via AWS Management Console: +Check Elasticsearch status via AWS Management Console: {% include checking-elasticsearch-status-via-aws-management-console.md %} -## 7. Check ElasticSearch indices +## 7. Check Elasticsearch indices -To check ElasticSearch indices via a CLI, do the following. +To check Elasticsearch indices via a CLI, do the following. {% include checking-elasticsearch-indices-via-a-cli.md %} diff --git a/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-unavailable-yves-or-glue.md b/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-unavailable-yves-or-glue.md index aaa931c8394..e7416cf314c 100644 --- a/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-unavailable-yves-or-glue.md +++ b/docs/ca/dev/troubleshooting/troubleshooting-tutorials/tutorial-troubleshooting-unavailable-yves-or-glue.md @@ -1,6 +1,6 @@ --- title: Tutorial — Troubleshooting unavailable Yves or Glue -description: Troubleshoot unavailable Yves or Glue in Spryker by checking logs, ECS services, Redis, and ElasticSearch to identify and resolve issues quickly. +description: Troubleshoot unavailable Yves or Glue in Spryker by checking logs, ECS services, Redis, and Elasticsearch to identify and resolve issues quickly. template: troubleshooting-guide-template last_updated: Oct 6, 2023 redirect_from: @@ -8,7 +8,7 @@ redirect_from: --- Yves or Glue didn't restart after a deployment or you can't access it. -To troubleshoot this issue, you need to go through all the stages of information flow. The default information flow is front end > Yves or Glue > ElastiCache, ElasticSearch, and Zed. +To troubleshoot this issue, you need to go through all the stages of information flow. The default information flow is front end > Yves or Glue > ElastiCache, Elasticsearch, and Zed. ![information flow diagram](https://spryker.s3.eu-central-1.amazonaws.com/cloud-docs/_includes/informatin-flow-diagram.png) @@ -43,14 +43,14 @@ Check Redis system information via a CLI as follows. {% include checking-redis-system-information-via-a-cli.md %} -## 6. Check ElasticSearch status +## 6. Check Elasticsearch status -Check ElasticSearch status via AWS Management Console: +Check Elasticsearch status via AWS Management Console: {% include checking-elasticsearch-status-via-aws-management-console.md %} -## 7. Check ElasticSearch indices +## 7. Check Elasticsearch indices -Check ElasticSearch status via a CLI: +Check Elasticsearch status via a CLI: {% include checking-elasticsearch-indices-via-a-cli.md %} diff --git a/docs/dg/dev/backend-development/data-manipulation/data-publishing/implement-synchronization-plugins.md b/docs/dg/dev/backend-development/data-manipulation/data-publishing/implement-synchronization-plugins.md index 5a0607ffa4c..10915f27593 100644 --- a/docs/dg/dev/backend-development/data-manipulation/data-publishing/implement-synchronization-plugins.md +++ b/docs/dg/dev/backend-development/data-manipulation/data-publishing/implement-synchronization-plugins.md @@ -29,7 +29,7 @@ related: link: docs/scos/dev/back-end-development/data-manipulation/data-publishing/synchronization-behavior-enabling-multiple-mappings.html --- -Sometimes it's needed to manually [synchronize or re-syncrhonize](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronize-repeated-export.html#published-data-re-generation) the published model data with Redis or ElasticSearch. To do that, you need to implement a synchronization plugin. +Sometimes it's needed to manually [synchronize or re-syncrhonize](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronize-repeated-export.html#published-data-re-generation) the published model data with Redis or Elasticsearch. To do that, you need to implement a synchronization plugin. Follow these steps to implement and register a synchronization plugin. @@ -115,7 +115,7 @@ The method descriptions: * `HelloWorldSynchronizationDataRepositoryPlugin::getResourceName()`—defines a resource name of the storage or search module for key generation. * `HelloWorldSynchronizationDataRepositoryPlugin::hasStore()`—defines if the entity implements a multi-store concept. * `HelloWorldSynchronizationDataRepositoryPlugin::getData()`—retrieves a collection of sync transfers based on the provided offset and limit. -* `HelloWorldSynchronizationDataRepositoryPlugin::getParams()`—defines additional sync parameters for Redis or ElasticSearch. +* `HelloWorldSynchronizationDataRepositoryPlugin::getParams()`—defines additional sync parameters for Redis or Elasticsearch. * `HelloWorldSynchronizationDataRepositoryPlugin::getQueueName()`—defines a queue name for synchonization. * `HelloWorldSynchronizationDataRepositoryPlugin::getSynchronizationQueuePoolName()`—defines the name of the synchronization queue pool for broadcasting messages. diff --git a/docs/dg/dev/development-getting-started-guide.md b/docs/dg/dev/development-getting-started-guide.md index f8c38b066b4..ee96b091437 100644 --- a/docs/dg/dev/development-getting-started-guide.md +++ b/docs/dg/dev/development-getting-started-guide.md @@ -85,7 +85,7 @@ To learn about the module versioning approach in Spryker, see [Semantic Versioni 1. Define how to manage the settings in the configuration files with [Configuration management](/docs/dg/dev/backend-development/data-manipulation/configuration-management.html). 2. [Configure services](/docs/dg/dev/integrate-and-configure/configure-services.html). -3. [Configure ElasticSearch](/docs/pbc/all/search/{{site.version}}/base-shop/tutorials-and-howtos/configure-elasticsearch.html). +3. [Configure Elasticsearch](/docs/pbc/all/search/{{site.version}}/base-shop/tutorials-and-howtos/configure-elasticsearch.html). 4. [Configure queue](/docs/dg/dev/backend-development/data-manipulation/queue/queue.html). 5. [Configure stores](/docs/dg/dev/internationalization-and-multi-store/set-up-multiple-stores.html#configure-stores). 6. [Set up cronjobs](/docs/dg/dev/backend-development/cronjobs/cronjobs.html). diff --git a/docs/dg/dev/integrate-and-configure/configure-services.md b/docs/dg/dev/integrate-and-configure/configure-services.md index c246e5c96eb..3c5cc9ca26c 100644 --- a/docs/dg/dev/integrate-and-configure/configure-services.md +++ b/docs/dg/dev/integrate-and-configure/configure-services.md @@ -218,18 +218,18 @@ docker/sdk clean-data docker/sdk up --build --data ``` -## ElasticSearch +## Elasticsearch [Elasticsearch](https://www.elastic.co/elasticsearch/) is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. For more information, see the following documents: * [Configure Elasticsearch](/docs/pbc/all/search/{{site.version}}/base-shop/tutorials-and-howtos/configure-elasticsearch.html)—describes ElastciSearch configuration in Spryker. -* [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html)—provides detailed information about ElasticSearch. +* [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html)—provides detailed information about Elasticsearch. -### Configure ElasticSearch +### Configure Elasticsearch -In `deploy.*.yml`, adjust the `services` section to open the port used for accessing ElasticSearch: +In `deploy.*.yml`, adjust the `services` section to open the port used for accessing Elasticsearch: ```yaml services: search: diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-non-standard-services.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-non-standard-services.md index d4ae6067cc8..d988903b5f2 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-non-standard-services.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-non-standard-services.md @@ -9,7 +9,7 @@ redirect_from: Spryker comes pre-configured with the following services by default: * RabbitMQ -* ElasticSearch +* Elasticsearch * Redis * MariaDB * Jenkins diff --git a/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md b/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md index 85443026ba0..75927763479 100644 --- a/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md +++ b/docs/pbc/all/content-management-system/202311.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md @@ -38,7 +38,7 @@ To create a new content form plugin, follow these steps: * `getTypeKey()`—returns a string with the name of your content item—for example, Foo. * `getTermKey()`—returns a string displaying the term for this content type in database—for example, `Foo`, `Foo List` or `Foo Query`. In database, a content type can have different term representations. Correspondingly, there are different ways of getting information about content. For example: * `Foo List`—product list IDs. - * `Foo Query`—product query as part of SQL/ElasticSearch query. This value is displayed in the Back Office, in **Content Management > Content Items**. + * `Foo Query`—product query as part of SQL/Elasticsearch query. This value is displayed in the Back Office, in **Content Management > Content Items**. * `getForm()`—a form class name with a namespace which is displayed on the **Content create** or **Content edit** pages. * `getTransferObject()`—maps form data to a content term transfer object—for example, `ContentFooTermTransfer`. diff --git a/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md b/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md index efb4eaf9e99..cf40de9ac9f 100644 --- a/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md +++ b/docs/pbc/all/content-management-system/202404.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md @@ -38,7 +38,7 @@ To create a new content form plugin, follow these steps: * `getTypeKey()`—returns a string with the name of your content item—for example, Foo. * `getTermKey()`—returns a string displaying the term for this content type in database—for example, `Foo`, `Foo List` or `Foo Query`. In database, a content type can have different term representations. Correspondingly, there are different ways of getting information about content. For example: * `Foo List`—product list IDs. - * `Foo Query`—product query as part of SQL/ElasticSearch query. This value is displayed in the Back Office, in **Content Management > Content Items**. + * `Foo Query`—product query as part of SQL/Elasticsearch query. This value is displayed in the Back Office, in **Content Management > Content Items**. * `getForm()`—a form class name with a namespace which is displayed on the **Content create** or **Content edit** pages. * `getTransferObject()`—maps form data to a content term transfer object—for example, `ContentFooTermTransfer`. diff --git a/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md b/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md index efb4eaf9e99..cf40de9ac9f 100644 --- a/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md +++ b/docs/pbc/all/content-management-system/202410.0/base-shop/tutorials-and-howtos/create-a-custom-content-item.md @@ -38,7 +38,7 @@ To create a new content form plugin, follow these steps: * `getTypeKey()`—returns a string with the name of your content item—for example, Foo. * `getTermKey()`—returns a string displaying the term for this content type in database—for example, `Foo`, `Foo List` or `Foo Query`. In database, a content type can have different term representations. Correspondingly, there are different ways of getting information about content. For example: * `Foo List`—product list IDs. - * `Foo Query`—product query as part of SQL/ElasticSearch query. This value is displayed in the Back Office, in **Content Management > Content Items**. + * `Foo Query`—product query as part of SQL/Elasticsearch query. This value is displayed in the Back Office, in **Content Management > Content Items**. * `getForm()`—a form class name with a namespace which is displayed on the **Content create** or **Content edit** pages. * `getTransferObject()`—maps form data to a content term transfer object—for example, `ContentFooTermTransfer`. diff --git a/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md b/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md index f1a495ce047..ae6f4924a38 100644 --- a/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md +++ b/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/marketing-and-conversion/analytics/fact-finder/installing-and-configuring-the-fact-finder-ng-api.md @@ -230,9 +230,9 @@ class SearchRouter implements SearchRouterInterface } ``` -If you want to use ElasticSearch for specific cases, you have to create a plugin on the project level +If you want to use Elasticsearch for specific cases, you have to create a plugin on the project level -**ElasticSearchHandlerPlugin** +**ElasticsearchHandlerPlugin** ```php Documentation: [Join field type](https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html) 2. Multi sharding with the `_routing` field. The idea is to avoid indexing problems by sharing big documents between shards. Breaking a huge index into smaller ones makes it easier for the search to index data. The solution is complex and does not solve the payload issues. @@ -106,7 +106,7 @@ The evaluated solutions are as follows: - [Script score query](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html#script-score-query-ex-request) - [Chapter 12. Full-Text Search](https://www.postgresql.org/docs/9.5/textsearch.html) -## ElasticSearch Join field type: Implementation +## Elasticsearch Join field type: Implementation To solve the ES indexing issue, we reduced the size of product abstract documents, which reduced dynamic mapping properties. @@ -175,7 +175,7 @@ To implement the solution, follow these steps: These two documents can be viewed as two tables with a foreign key in terms of relational databases. -### ElasticSearch join data type feature: Side effects +### Elasticsearch join data type feature: Side effects The side effects of this solution are the following: diff --git a/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md b/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md index 4302756a2dd..df1152adb03 100644 --- a/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md +++ b/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md @@ -29,7 +29,7 @@ Price import flow: When enabling Spryker to handle such a number of prices, the following challenges occur: 1. 25,000,000 prices are imported in two separate price dimensions. -2. A product can have about 40,000 prices. This results in overpopulated product abstract search documents: each document aggregates prices of abstract products and all related concrete products. Each price is represented as an indexed field in the search document. Increasing the number of indexed fields slows `ElasticSearch(ES)` down. Just for comparison, the [recommended limit](https://www.elastic.co/guide/en/elasticsearch/reference/master/mapping.html#mapping-limit-settings) is 1,000. +2. A product can have about 40,000 prices. This results in overpopulated product abstract search documents: each document aggregates prices of abstract products and all related concrete products. Each price is represented as an indexed field in the search document. Increasing the number of indexed fields slows `Elasticsearch(ES)` down. Just for comparison, the [recommended limit](https://www.elastic.co/guide/en/elasticsearch/reference/master/mapping.html#mapping-limit-settings) is 1,000. 3. Overloaded product abstract search documents cause issues with memory limit and slow down [Publish and Synchronization](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.html). The average document size is bigger than 1 MB. 4. When more than 100 product abstract search documents are processed at a time, the payload gets above 100 MB, and ES rejects queries. [AWS native service](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/aes-limits.html) does not allow changing this limit. @@ -94,7 +94,7 @@ In AWS, the `http.max_content_length` ES limit defines the maximum payload size The evaluated solutions are as follows: 1. ES join field type. - This ES functionality is similar to the classical joins in relational databases. This solution solves your problem faster and with less effort. To learn about the implementation of this solution, see [ElasticSearch join data type: Implementation](#elasticsearch-join-field-type-implementation). Also, have a look at the other evaluated solutions as they may be more appropriate in your particular case. + This ES functionality is similar to the classical joins in relational databases. This solution solves your problem faster and with less effort. To learn about the implementation of this solution, see [Elasticsearch join data type: Implementation](#elasticsearch-join-field-type-implementation). Also, have a look at the other evaluated solutions as they may be more appropriate in your particular case.
Documentation: [Join field type](https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html) 2. Multi sharding with the `_routing` field. The idea is to avoid indexing problems by sharing big documents between shards. Breaking a huge index into smaller ones makes it easier for the search to index data. The solution is complex and does not solve the payload issues. @@ -106,7 +106,7 @@ The evaluated solutions are as follows: - [Script score query](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html#script-score-query-ex-request) - [Chapter 12. Full-Text Search](https://www.postgresql.org/docs/9.5/textsearch.html) -## ElasticSearch Join field type: Implementation +## Elasticsearch Join field type: Implementation To solve the ES indexing issue, we reduced the size of product abstract documents, which reduced dynamic mapping properties. @@ -175,7 +175,7 @@ To implement the solution, follow these steps: These two documents can be viewed as two tables with a foreign key in terms of relational databases. -### ElasticSearch join data type feature: Side effects +### Elasticsearch join data type feature: Side effects The side effects of this solution are the following: diff --git a/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md b/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md index 4302756a2dd..df1152adb03 100644 --- a/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md +++ b/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md @@ -29,7 +29,7 @@ Price import flow: When enabling Spryker to handle such a number of prices, the following challenges occur: 1. 25,000,000 prices are imported in two separate price dimensions. -2. A product can have about 40,000 prices. This results in overpopulated product abstract search documents: each document aggregates prices of abstract products and all related concrete products. Each price is represented as an indexed field in the search document. Increasing the number of indexed fields slows `ElasticSearch(ES)` down. Just for comparison, the [recommended limit](https://www.elastic.co/guide/en/elasticsearch/reference/master/mapping.html#mapping-limit-settings) is 1,000. +2. A product can have about 40,000 prices. This results in overpopulated product abstract search documents: each document aggregates prices of abstract products and all related concrete products. Each price is represented as an indexed field in the search document. Increasing the number of indexed fields slows `Elasticsearch(ES)` down. Just for comparison, the [recommended limit](https://www.elastic.co/guide/en/elasticsearch/reference/master/mapping.html#mapping-limit-settings) is 1,000. 3. Overloaded product abstract search documents cause issues with memory limit and slow down [Publish and Synchronization](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.html). The average document size is bigger than 1 MB. 4. When more than 100 product abstract search documents are processed at a time, the payload gets above 100 MB, and ES rejects queries. [AWS native service](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/aes-limits.html) does not allow changing this limit. @@ -94,7 +94,7 @@ In AWS, the `http.max_content_length` ES limit defines the maximum payload size The evaluated solutions are as follows: 1. ES join field type. - This ES functionality is similar to the classical joins in relational databases. This solution solves your problem faster and with less effort. To learn about the implementation of this solution, see [ElasticSearch join data type: Implementation](#elasticsearch-join-field-type-implementation). Also, have a look at the other evaluated solutions as they may be more appropriate in your particular case. + This ES functionality is similar to the classical joins in relational databases. This solution solves your problem faster and with less effort. To learn about the implementation of this solution, see [Elasticsearch join data type: Implementation](#elasticsearch-join-field-type-implementation). Also, have a look at the other evaluated solutions as they may be more appropriate in your particular case.
Documentation: [Join field type](https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html) 2. Multi sharding with the `_routing` field. The idea is to avoid indexing problems by sharing big documents between shards. Breaking a huge index into smaller ones makes it easier for the search to index data. The solution is complex and does not solve the payload issues. @@ -106,7 +106,7 @@ The evaluated solutions are as follows: - [Script score query](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html#script-score-query-ex-request) - [Chapter 12. Full-Text Search](https://www.postgresql.org/docs/9.5/textsearch.html) -## ElasticSearch Join field type: Implementation +## Elasticsearch Join field type: Implementation To solve the ES indexing issue, we reduced the size of product abstract documents, which reduced dynamic mapping properties. @@ -175,7 +175,7 @@ To implement the solution, follow these steps: These two documents can be viewed as two tables with a foreign key in terms of relational databases. -### ElasticSearch join data type feature: Side effects +### Elasticsearch join data type feature: Side effects The side effects of this solution are the following: diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md index ec25f9349af..c0f18c7161b 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md @@ -1,7 +1,7 @@ --- title: Configure Elasticsearch description: Elasticsearch is a NoSQL data store that lets you predefine the structure of the data you store in it. -last_updated: Jul 24, 2022 +last_updated: Dec 17, 2024 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/search-configure-elasticsearch originalArticleId: 6aa9f4ab-25de-46bc-b734-54bccb25cf0b @@ -187,3 +187,31 @@ For the default page index, the class is `\Generated\Shared\Search\PageIndexMap` These classes provide some information from mapping, such as fields and metadata. Use these classes for references to program against something related to that mapping schema. If you change mapping and run the installer, autogenerated classes change accordingly. + +### Updating indexes with existing data + +Elasticsearch is limited when it comes to updating indexes that contain data. If any issues occur, the errors provided by Elasticsearch are confusing. + +To make sure an index is correct, do the following: + +1. Drop and recreate data: + +```bash +APPLICATION_STORE=DE console search:index:delete +APPLICATION_STORE=DE console search:setup:sources +``` + +2. If the previous command introduced or may have introduced any changes to searchable data, rewrite the data: + +```bash +APPLICATION_STORE=DE console publish:trigger-events +``` + +3. Sync the data to Elasticsearch: + + +```bash +APPLICATION_STORE=DE console sync:data +``` + +For help with more specific cases, engage with [Spryker community](https://commercequest.space/) or [contact support](https://spryker.force.com/support/s/).