asp.net core集成ElasticSearch+实现全文检索功能
public class ElasticSearchService
{
private readonly ElasticClient _elasticClient;
public ElasticSearchService(IOptions<ElasticSearchOptions> options)
{
var settings = new ConnectionSettings(new Uri(options.Value.Uri))
.DefaultIndex(options.Value.DefaultIndex);
if (!string.IsNullOrEmpty(options.Value.Username))
{
settings.BasicAuthentication(options.Value.Username, options.Value.Password);
}
_elasticClient = new ElasticClient(settings);
}
public async Task<IReadOnlyCollection<TDocument>> SearchAsync<TDocument>(string query, int size = 10)
where TDocument : class
{
var searchResponse = await _elasticClient.SearchAsync<TDocument>(s => s
.Query(q => q
.MultiMatch(m => m
.Query(query)
.Fields(f => f
.Field(ff => ff.Title)
.Field(ff => ff.Content)
)
)
)
.Size(size)
);
return searchResponse.Documents;
}
}
public class ElasticSearchOptions
{
public string Uri { get; set; }
public string DefaultIndex { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
这个代码示例展示了如何在ASP.NET Core应用程序中集成ElasticSearch,并实现了一个搜索方法,该方法可以接受一个查询字符串并返回与之匹配的文档集合。这个简化的例子使用了NEST库来与ElasticSearch交互,并展示了如何执行基本的全文搜索查询。在实际应用中,你可能需要添加更多的配置和错误处理。
评论已关闭