4 changed files with 112 additions and 2 deletions
@ -0,0 +1,109 @@ |
|||
# ElasticSearch |
|||
|
|||
## 安装 |
|||
|
|||
- 添加以下 NuGet 包到你的项目 |
|||
- Lion.AbpPro.ElasticSearch |
|||
- 添加 [DependsOn(typeof(AbpProElasticSearchModule))] 到你的项目模块类. |
|||
|
|||
## 配置 |
|||
|
|||
```json |
|||
{ |
|||
"ElasticSearch": { |
|||
"Host": "http://localhost:9200", |
|||
"UserName": "admin", |
|||
"Password": "1q2w3E*" |
|||
} |
|||
} |
|||
``` |
|||
|
|||
## 示例 |
|||
|
|||
- 实现 Student 的增删查改 |
|||
|
|||
### 定义学生类 |
|||
|
|||
- 实现 IElasticSearchEntity 接口,此接口有主键 Id,创建时间字段,也是泛型约束。 |
|||
|
|||
```csharp |
|||
public class Student : IElasticSearchEntity |
|||
{ |
|||
public Guid Id { get; set; } |
|||
|
|||
public DateTime CreationTime { get; set; } |
|||
|
|||
public double Price { get; set; } |
|||
|
|||
public string Name { get; set; } |
|||
|
|||
public int Age { get; set; } |
|||
} |
|||
``` |
|||
|
|||
### 定义接口 |
|||
|
|||
```csharp |
|||
public interface IStudentElasticSearchRepository : IBasicElasticSearchRepository<Student> |
|||
{ |
|||
} |
|||
``` |
|||
|
|||
### 实现接口 |
|||
|
|||
```csharp |
|||
public class StudentElasticSearchRepository : ElasticSearchRepository<Student>, IStudentElasticSearchRepository, ITransientDependency |
|||
{ |
|||
public StudentElasticSearchRepository(IElasticsearchProvider elasticsearchProvider) : base(elasticsearchProvider) |
|||
{ |
|||
} |
|||
|
|||
// index 只能是小写 |
|||
protected override string IndexName => "Students".ToLower(); |
|||
} |
|||
``` |
|||
|
|||
### CURD |
|||
|
|||
```csharp |
|||
// 注入 |
|||
private readonly IStudentElasticSearchRepository _studentElasticSearchRepository; |
|||
public StudentElasticSearchRepositoryTests(IStudentElasticSearchRepository studentElasticSearchRepository) |
|||
{ |
|||
_studentElasticSearchRepository = studentElasticSearchRepository; |
|||
} |
|||
|
|||
// var student = new Student |
|||
// { |
|||
// Id = Guid.NewGuid(), |
|||
// Name = "韩立", |
|||
// Age = 10, |
|||
// CreationTime = DateTime.Now, |
|||
// Price = 100.3, |
|||
// }; |
|||
|
|||
// 根据主键Id查询 |
|||
var result = await _studentElasticSearchRepository.FindAsync(student.Id); |
|||
|
|||
// 新增 |
|||
await _studentElasticSearchRepository.InsertAsync(student); |
|||
|
|||
// 批量新增 |
|||
await _studentElasticSearchRepository.InsertManyAsync(students); |
|||
|
|||
// 更新 |
|||
await _studentElasticSearchRepository.UpdateAsync(student); |
|||
|
|||
// 删除 |
|||
await _studentElasticSearchRepository.DeleteAsync(student.Id); |
|||
|
|||
// 分页查询 |
|||
var mustFilters = new List<Func<QueryContainerDescriptor<Student>, QueryContainer>>(); |
|||
mustFilters.Add(e => e.Term(f => f.Field(b => b.Name.Suffix("keyword")).Value("韩立"))); |
|||
var result = await _studentElasticSearchRepository.PageAsync(mustFilters); |
|||
``` |
|||
|
|||
### 其它操作 |
|||
|
|||
- 在 StudentElasticSearchRepository 中使用 Client 即可获取到 es 原生 api 对象。 |
|||
- 更多示例请查看单元测试(StudentElasticSearchRepositoryTests.cs) |
|||
Loading…
Reference in new issue