elasticsearch,nest,C#,.net,elasticsearch,Nest" /> elasticsearch,nest,C#,.net,elasticsearch,Nest" />

C# NEST返回null而不是字段

C# NEST返回null而不是字段,c#,.net,elasticsearch,nest,C#,.net,elasticsearch,Nest,我使用elastic已经有很长一段时间了,但我从未编写过获取某些数据的代码。现在我有麻烦了 我有一个索引,我想在其中检索投影到某个字段上的一些文档。我可以直接用SQL写 选择myDocumentField 从myIndex 但出于某种原因,我得到的是空值而不是值 我的索引中有6个文档。因此,我编写以下查询: var elasticServiceNumbers = await _elasticClient.SearchAsync<ElasticRequest>(

我使用elastic已经有很长一段时间了,但我从未编写过获取某些数据的代码。现在我有麻烦了

我有一个索引,我想在其中检索投影到某个字段上的一些文档。我可以直接用SQL写

选择myDocumentField
从myIndex
但出于某种原因,我得到的是空值而不是值

我的索引中有6个文档。因此,我编写以下查询:

var elasticServiceNumbers = await _elasticClient.SearchAsync<ElasticRequest>(
                                s => s.Query(Selector));

字段是否标记为已存储?我看到它们被编入索引(可搜索)

不带任何疑问试一试怎么样

var r = await _elasticClient.SearchAsync<ElasticRequest>(s=>s.From(0).Size(10));
var r=await\u elasticClient.SearchAsync(s=>s.From(0).Size(10));

问题中的字段似乎是可搜索和可聚合的,但未存储,即未存储发送到Elasticsearch的原始
\u源文件

使用NEST获取文档值字段的步骤

var searchResponse = client.Search<ElasticRequest>(s => s
    .DocValueFields(f => f
        .Field(ff => ff.ServiceNumber.Suffix("keyword"))
    )
);
var searchResponse=client.Search(s=>s
.DocValueFields(f=>f
.Field(ff=>ff.ServiceNumber.后缀(“关键字”))
)
);

这是使用
关键字
映射的
服务编号
,它看起来是一个文档值字段。

字段是否标记为已存储?我看到它们被编入了索引(可搜索)。你能用Kibana编写一个返回这些字段的查询吗?如果是这样的话,你能把它加入你的问题吗?当然,没什么不同。我有一些想法,需要在发布前检查它们。不,我以前使用过
DocValueFields
,但它们也是空的。。我尝试了很多方法,但似乎只有
elasticServiceNumbers.Hits.Select(x=>x.Source.ServiceNumber)
能按预期工作。好的,这意味着
ServiceNumber
\u Source
中。您可以通过ElasticServiceNumber.Documents获得
\u源文件

var r = await _elasticClient.SearchAsync<ElasticRequest>(s=>s.From(0).Size(10));
var searchResponse = client.Search<ElasticRequest>(s => s
    .DocValueFields(f => f
        .Field(ff => ff.ServiceNumber.Suffix("keyword"))
    )
);