我有一个实体存储在一个弹性索引,他的字段之一是一个Id(int)。
我目前正在使用此代码来检索数据:
var searchRequest = new SearchRequest<MyEntity>(indexName)
{
Size = 1,
Query = new MatchAllQuery(),
Sort = new List<ISort>()
{
new FieldSort(){ Field = "_id", Order = SortOrder.Descending }
}
};
var result = await _elasticClient.SearchAsync<MyEntity>(searchRequest);
var highestId = result.Documents.First().Id;
这段代码没有返回最大ID,但它返回了ID“999999”。我认为这是因为搜索请求中的“_id”不是我实体中的ID。查询该值的正确方法是什么?
编辑:我当然试过在上面的代码中使用“id”(或Id),但是我得到了一个例外
异常提示:应为:“true| false“,实际值:”“true”“,偏移量:639
此外,我尝试了这个,但我得到的id,它甚至低于前一个:
var response = await _elasticClient.SearchAsync<MyEntity>(s => s
.Index(indexName)
.Size(1)
.Aggregations(a =>
a.Max("max_id", x => x.Field("id"))
)
2条答案
按热度按时间hsgswve41#
如果使用id表示实体,请尝试以下操作:
xlpyo6sf2#
最后这里的解决方案:
@rabbitbr回复后,我收到了以下请求:
这里我的错误不是查询,而是我收集结果的方式:获取“highestId”值的正确方法是从响应中获取字段“聚合”,然后使用**.Max(聚合名称)**