在.Net环境下使用elasticsearch实现大数据量的搜索
生活随笔
收集整理的這篇文章主要介紹了
在.Net环境下使用elasticsearch实现大数据量的搜索
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Elasticsearch是一個(gè)基于Apache Lucene(TM)的開源搜索引擎。無論在開源還是專有領(lǐng)域,Lucene可以被認(rèn)為是迄今為止最先進(jìn)、性能最好的、功能最全的搜索引擎庫。
Elasticsearch使用標(biāo)準(zhǔn)的RESTful API和JSON。我們還用多種語言構(gòu)建和維護(hù)客戶機(jī),如Java、Python、。NET、SQL和PHP。此外,我們的社區(qū)貢獻(xiàn)了更多。它們易于使用,使用起來很自然,而且,就像Elasticsearch一樣,不會(huì)限制您對(duì)它們的使用。
下面看下基于Net的使用
https://github.com/elastic/elasticsearch-net
選擇 Elasticsearch.Net 作為客戶端
連接
var?node?=?new?Uri("http://myserver:9200"); var?config?=?new?ConnectionConfiguration(node); var?client?=?new?ElasticLowLevelClient(config); var?myJson?=?@"{?""hello""?:?""world""?}"; client.Index<StringResponse>("myindex",?"1",?myJson); var?myJson?=?new?{?hello?=?"world"?}; client.Index<BytesResponse>("myindex",?"1",?PostData.Serializable(myJson));創(chuàng)建
public?class?ElasticSearchClient{public?ElasticLowLevelClient?Client?{?get;?}private?readonly?IConfiguration?_configuration;public?ElasticSearchClient(IConfiguration?configuration){_configuration?=?configuration;Client?=?InitClient();}#region?Methodspublic?async?Task<string>?Index(string?index,?string?id,?PostData?body){var?response?=?await?Client.IndexAsync<StringResponse>(index,?id,?body);ResponseValidate(response);return?response.Body;}查詢
public?async?Task<List<string>>?SearchWithHighLight(string?index,?string?query){var?response?=?await?Client.SearchAsync<StringResponse>(index,PostData.Serializable(new{from?=?0,size?=?100,query?=?new{match?=?new{content?=?query}},highlight?=?new{pre_tags?=?new[]?{?"<tag1>",?"<tag2>"?},post_tags?=?new[]?{?"/<tag1>",?"/<tag2>"?},fields?=?new{content?=?new?{?}}}}));ResponseValidate(response);var?responseJson?=?(JObject)JsonConvert.DeserializeObject(response.Body);var?hits?=?responseJson["hits"]["hits"]?as?JArray;var?result?=?new?List<string>();foreach?(var?hit?in?hits){var?id?=?hit["_id"].ToObject<string>();result.Add(id);}return?result;}刪除
public?async?Task<bool>?Delete(string?index,?string?id){var?response?=?await?Client.DeleteAsync<StringResponse>(index,?id);ResponseValidate(response);return?response.Success;}#endregion#region?privatesprivate?ElasticLowLevelClient?InitClient(){var?node?=?new?Uri(_configuration.GetConnectionString("ElasticSearch"));var?settings?=?new?ConnectionConfiguration(node);var?client?=?new?ElasticLowLevelClient(settings);return?client;}private?void?ResponseValidate(StringResponse?response){if?(response.Success?==?false){throw?new?ResultException(response.Body);}}#endregion}使用
private?readonly?ElasticSearchClient?_elasticSearchClient; await?_elasticSearchClient.Index(Article.EsIndex,?article.ArticleUID,PostData.Serializable(article));總結(jié)
以上是生活随笔為你收集整理的在.Net环境下使用elasticsearch实现大数据量的搜索的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术分享|前端性能 关键性能指标以及测量
- 下一篇: .NET 大会今日开幕 |这些白嫖福利不