
nuget安装WorkflowCore.Providers.Elasticsearch
using Nest;
services.AddWorkflow(cfg =>
{
...
cfg.UseElasticsearch(new ConnectionSettings(new Uri("http://localhost:9200")), "index_name");
});将ISearchIndex服务注入,并调用Search方法
Search(string terms, int skip, int take, params SearchFilter[] filters)以空格分隔的搜索字符串,空字符串会匹配到所有内容。该字符串会对工作流的描述、引用、状态、工作流定义进行搜索。
如果自定义数据对象实现了ISearchable,则可以在自定义数据对象中进行搜索。
using WorkflowCore.Interfaces;
...
public class MyData : ISearchable
{
public string StrValue1 { get; set; }
public string StrValue2 { get; set; }
public IEnumerable<string> GetSearchTokens()
{
return new List<string>()
{
StrValue1,
StrValue2
};
}
}searchIndex.Search("puppies", 0, 10);查询所有包含puppies字段
跳过多少,取多少
用于搜索的筛选器列表,可以用来刷选标量、日期范围、数字范围、状态
using WorkflowCore.Models.Search;
...
searchIndex.Search("", 0, 10, ScalarFilter.Equals(x => x.Reference, "My Reference"));searchIndex.Search("", 0, 10, DateRangeFilter.After(x => x.CreateTime, startDate));searchIndex.Search("", 0, 10, DateRangeFilter.Between(x => x.CompleteTime, startDate, endDate));searchIndex.Search("", 0, 10, StatusFilter.Equals(WorkflowStatus.Complete));class MyData
{
public string Value1 { get; set; }
public int Value2 { get; set; }
}
searchIndex.Search("", 0, 10, ScalarFilter.Equals<MyData>(x => x.Value1, "blue moon"));
searchIndex.Search("", 0, 10, NumericRangeFilter.LessThan<MyData>(x => x.Value2, 5))