赞
踩
实体类Shop结构:
- public class Shop
- {
- public string UUID { set; get; }
-
- public string ItemType { set; get; }
-
- public long ItemId { set; get; }
-
- public string ItemName { set; get; }
-
- public long Gold { set; get; }
-
- public long Number { set; get; }
-
- public string Data { set; get; }
-
- public string Quality { set; get; }
-
- public string Category { set; get; }
-
- public string SellerIp { set; get; }
- }
初始化客户端
var client = new ElasticsearchClient(new Uri("http://localhost:9200"));
创建索引
var response = await client.Indices.CreateAsync("dragon");
判断索引是否存在
var response = await client.Indices.ExistsAsync("dragon");
增加数据
var response = await client.IndexAsync(shop, (IndexName)"dragon");
修改数据
var response = await client.UpdateAsync<Shop, Shop>((IndexName)"dragon", 1, u => u.Doc(shop));
判断是否存在
var response = await client.ExistsAsync<Shop>(1, idx => idx.Index("dragon"));
删除数据
var response = await client.DeleteAsync((IndexName)"dragon", 1);
查询数据(根据4个变量是否为空,动态构建查询条件).其中,Term是精确匹配,Match是模糊匹配。
- protected override async Task ExecuteAsync(CancellationToken stoppingToken)
- {
- var client = new ElasticsearchClient(new Uri("http://localhost:9200"));
-
- string category = "";
- string quality = "";
- string itemName = "";
- string itemType = "";
-
- List<Action<QueryDescriptor<Shop>>> configure = new List<Action<QueryDescriptor<Shop>>>();
-
- if (!string.IsNullOrEmpty(quality))
- {
- configure.Add(m => m.Term(t => t.Field(f => f.Quality).Value(FieldValue.String(quality))));
- }
- if (!string.IsNullOrEmpty(category))
- {
- configure.Add(m => m.Term(t => t.Field(f => f.Category).Value(FieldValue.String(category))));
- }
- if (!string.IsNullOrEmpty(itemType))
- {
- configure.Add(m => m.Term(t => t.Field(f => f.ItemType).Value(FieldValue.String(itemType))));
- }
- if (!string.IsNullOrEmpty(itemName))
- {
- configure.Add(m => m.Match(t => t.Field(f => f.ItemName).Query(itemName)));
- }
-
- var response = await client.SearchAsync<Shop>(s => s
- .Index("dragon")
- .From(0)
- .Size(16)
- .Query(q =>
- q.Bool(b => b.Must(configure.ToArray()))
- )
- );
-
- if (response.IsValidResponse)
- {
- //本次查询获得的数据
- List<Shop> shops = response.Documents.ToList();
- //本次查询取得的数据量
- int count = response.Documents.Count;
- //满足查询条件的总数据量
- long total = response.HitsMetadata.Total.Match(x => x.Value, y => y);
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。