受欢迎的博客标签

How to Replace nopCommerce’s default SQL search with Elasticsearch

Published

Replace nopCommerce’s default SQL search with Elasticsearch

 

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