如何将 X.PagedList 与 ElasticSearch Nest 一起使用?
How can I use X.PagedList with ElasticSearch Nest?
背景
我正在使用 ElasticSearch 作为我正在开发的新 ASP.Net Core 2.1 网站的搜索引擎。我正在使用 Nest API 与它集成。我想用 X.PagedList 为我处理寻呼。
我在其他 ASP.Net 核心项目中使用过它,它在 MS SQL 服务器中查询数据时运行良好。
代码
ISearchResponse<Foo> searchResponse =
_elasticSearchClient.Search<Foo>(s => s
.Query(q => q
.Bool(b => b.Filter(distanceFilters))
)
.Source(src => src
.Includes(i => i
.Fields(
f => f.Field1,
f => f.Field2,
f => f.Field3
)
)
)
.From(options.From)
.Size(options.Size)
);
var hitsMD = searchResponse.HitsMetadata;
var results = hitsMD?.Hits.Select(s => new Hit()
{
Index = s.Index,
Id = s.Id,
Score = s.Score,
Job = s.Source
}
).ToPagedList(PageNumber, PageSize);
问题
当我对ElasticSearch 返回的搜索结果调用.ToPagedList 时,它只显示一页结果。
问题是 ElasticSearch 有自己的分页机制,所以它只返回一页匹配项。
我的想法是,因为 ElasticSearch 传回总点击次数,所以我可以通过设置 PagedList.TotalItemCount 属性 告诉 PagedList 列表中有多少项目。但是,我不能这样做,因为它是一个私有集。
我已经尝试删除 from 和 size 但是这个 returns 10 次点击是 ElasticSearch 的默认大小,他们显然是出于性能原因而设置的。
问题
如何在使用 Nest API 集成到 ElasticSearch 中的同时使用 X.PagedList 包?
你基本上已经掌握了所有的部分。您只缺少 StaticPagedList<T>
。由于分页 已经 由 Elasticsearch 处理,您只需定义一个静态分页设置,即:
var pagedResults = new StaticPagedList<Foo>(results, PageNumber, PageSize, total);
背景
我正在使用 ElasticSearch 作为我正在开发的新 ASP.Net Core 2.1 网站的搜索引擎。我正在使用 Nest API 与它集成。我想用 X.PagedList 为我处理寻呼。
我在其他 ASP.Net 核心项目中使用过它,它在 MS SQL 服务器中查询数据时运行良好。
代码
ISearchResponse<Foo> searchResponse =
_elasticSearchClient.Search<Foo>(s => s
.Query(q => q
.Bool(b => b.Filter(distanceFilters))
)
.Source(src => src
.Includes(i => i
.Fields(
f => f.Field1,
f => f.Field2,
f => f.Field3
)
)
)
.From(options.From)
.Size(options.Size)
);
var hitsMD = searchResponse.HitsMetadata;
var results = hitsMD?.Hits.Select(s => new Hit()
{
Index = s.Index,
Id = s.Id,
Score = s.Score,
Job = s.Source
}
).ToPagedList(PageNumber, PageSize);
问题
当我对ElasticSearch 返回的搜索结果调用.ToPagedList 时,它只显示一页结果。
问题是 ElasticSearch 有自己的分页机制,所以它只返回一页匹配项。
我的想法是,因为 ElasticSearch 传回总点击次数,所以我可以通过设置 PagedList.TotalItemCount 属性 告诉 PagedList 列表中有多少项目。但是,我不能这样做,因为它是一个私有集。
我已经尝试删除 from 和 size 但是这个 returns 10 次点击是 ElasticSearch 的默认大小,他们显然是出于性能原因而设置的。
问题
如何在使用 Nest API 集成到 ElasticSearch 中的同时使用 X.PagedList 包?
你基本上已经掌握了所有的部分。您只缺少 StaticPagedList<T>
。由于分页 已经 由 Elasticsearch 处理,您只需定义一个静态分页设置,即:
var pagedResults = new StaticPagedList<Foo>(results, PageNumber, PageSize, total);