Replace nopCommerce’s default SQL search with Elasticsearch
Table of Contents
Replace Search Code in nopCommerce
Replace nopCommerce’s default SQL search with Elasticsearch (products, categories, etc.)
for example
Override IProductSearchService.SearchProductsAsync vi Elasticsearch
public async Task<IList<Product>> SearchProductsAsync(string keywords, int pageIndex = 0, int pageSize = 10)
{
var response = await _elastic.Client.SearchAsync<Product>(s => s
.Index("nop_products")
.From(pageIndex * pageSize)
.Size(pageSize)
.Query(q => q
.MultiMatch(mm => mm
.Fields(f => f.Field(p => p.Name).Field(p => p.ShortDescription).Field(p => p.FullDescription))
.Query(keywords)
)
)
);
return response.Documents.ToList();
}
Create a Elasticsearch Search Plugin
Plugin development — Write a standalone nopCommerce plugin that wraps Elastic.Clients.Elasticsearch.
/Plugins/Nop.Plugin.Search.Elasticsearch
├─ ElasticsearchSearchService.cs
├─ ElasticsearchIndexer.cs
├─ ElasticsearchSettings.cs
├─ Plugin.cs
Create a standalone Elasticsearch Web
Push product/catalog data into Elasticsearch via a scheduled task