|
|
|
@ -26,7 +26,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
|
|
|
|
|
_options = options.Value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task CreateIndexIfNeededAsync(CancellationToken cancellationToken = default)
|
|
|
|
|
public virtual async Task CreateIndexIfNeededAsync(CancellationToken cancellationToken = default)
|
|
|
|
|
{
|
|
|
|
|
ValidateElasticSearchEnabled();
|
|
|
|
|
|
|
|
|
@ -54,7 +54,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task AddOrUpdateAsync(Document document, CancellationToken cancellationToken = default)
|
|
|
|
|
public virtual async Task AddOrUpdateAsync(Document document, CancellationToken cancellationToken = default)
|
|
|
|
|
{
|
|
|
|
|
ValidateElasticSearchEnabled();
|
|
|
|
|
|
|
|
|
@ -67,13 +67,13 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
|
|
|
|
|
|
|
|
|
|
var esDocument = new EsDocument
|
|
|
|
|
{
|
|
|
|
|
Id = document.Id,
|
|
|
|
|
ProjectId = document.ProjectId,
|
|
|
|
|
Id = NormalizeField(document.Id),
|
|
|
|
|
ProjectId = NormalizeField(document.ProjectId),
|
|
|
|
|
Name = document.Name,
|
|
|
|
|
FileName = document.FileName,
|
|
|
|
|
Content = document.Content,
|
|
|
|
|
LanguageCode = ConvertLanguageCode(document.LanguageCode),
|
|
|
|
|
Version = ConvertVersion(document.Version)
|
|
|
|
|
LanguageCode = NormalizeField(document.LanguageCode),
|
|
|
|
|
Version = NormalizeField(document.Version)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (!existsResponse.Exists)
|
|
|
|
@ -89,7 +89,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task DeleteAsync(Guid id, CancellationToken cancellationToken = default)
|
|
|
|
|
public virtual async Task DeleteAsync(Guid id, CancellationToken cancellationToken = default)
|
|
|
|
|
{
|
|
|
|
|
ValidateElasticSearchEnabled();
|
|
|
|
|
|
|
|
|
@ -97,7 +97,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
|
|
|
|
|
.DeleteAsync(DocumentPath<Document>.Id(id), x => x.Index(_options.IndexName), cancellationToken));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task DeleteAllAsync(CancellationToken cancellationToken = default)
|
|
|
|
|
public virtual async Task DeleteAllAsync(CancellationToken cancellationToken = default)
|
|
|
|
|
{
|
|
|
|
|
ValidateElasticSearchEnabled();
|
|
|
|
|
|
|
|
|
@ -110,7 +110,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
|
|
|
|
|
.DeleteByQueryAsync(request, cancellationToken));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task DeleteAllByProjectIdAsync(Guid projectId, CancellationToken cancellationToken = default)
|
|
|
|
|
public virtual async Task DeleteAllByProjectIdAsync(Guid projectId, CancellationToken cancellationToken = default)
|
|
|
|
|
{
|
|
|
|
|
ValidateElasticSearchEnabled();
|
|
|
|
|
|
|
|
|
@ -127,7 +127,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
|
|
|
|
|
new TermQuery
|
|
|
|
|
{
|
|
|
|
|
Field = "projectId",
|
|
|
|
|
Value = projectId
|
|
|
|
|
Value = NormalizeField(projectId)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -139,7 +139,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
|
|
|
|
|
.DeleteByQueryAsync(request, cancellationToken));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<List<EsDocument>> SearchAsync(string context, Guid projectId, string languageCode,
|
|
|
|
|
public virtual async Task<List<EsDocument>> SearchAsync(string context, Guid projectId, string languageCode,
|
|
|
|
|
string version, int? skipCount = null, int? maxResultCount = null,
|
|
|
|
|
CancellationToken cancellationToken = default)
|
|
|
|
|
{
|
|
|
|
@ -168,17 +168,17 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
|
|
|
|
|
new TermQuery
|
|
|
|
|
{
|
|
|
|
|
Field = "projectId",
|
|
|
|
|
Value = projectId
|
|
|
|
|
Value = NormalizeField(projectId)
|
|
|
|
|
},
|
|
|
|
|
new TermQuery
|
|
|
|
|
{
|
|
|
|
|
Field = "version",
|
|
|
|
|
Value = ConvertVersion(version)
|
|
|
|
|
Value = NormalizeField(version)
|
|
|
|
|
},
|
|
|
|
|
new TermQuery
|
|
|
|
|
{
|
|
|
|
|
Field = "languageCode",
|
|
|
|
|
Value = ConvertLanguageCode(languageCode)
|
|
|
|
|
Value = NormalizeField(languageCode)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -216,7 +216,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
|
|
|
|
|
return docs;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void HandleError(IElasticsearchResponse response)
|
|
|
|
|
protected virtual void HandleError(IElasticsearchResponse response)
|
|
|
|
|
{
|
|
|
|
|
if (!response.ApiCall.Success)
|
|
|
|
|
{
|
|
|
|
@ -225,7 +225,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void ValidateElasticSearchEnabled()
|
|
|
|
|
protected virtual void ValidateElasticSearchEnabled()
|
|
|
|
|
{
|
|
|
|
|
if (!_options.Enable)
|
|
|
|
|
{
|
|
|
|
@ -233,14 +233,14 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected string ConvertLanguageCode(string languageCode)
|
|
|
|
|
protected virtual string NormalizeField(Guid field)
|
|
|
|
|
{
|
|
|
|
|
return languageCode.Replace("-", "").ToLower();
|
|
|
|
|
return NormalizeField(field.ToString("N"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected string ConvertVersion(string version)
|
|
|
|
|
protected virtual string NormalizeField(string field)
|
|
|
|
|
{
|
|
|
|
|
return version.Replace("-", "").ToLower();
|
|
|
|
|
return field.Replace("-", "").ToLower();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|