gpt4 book ai didi

c# - ElasticSearch NEST 返回特定字段

转载 作者:太空狗 更新时间:2023-10-29 18:24:44 25 4
gpt4 key购买 nike

我正在尝试编写一个只返回其中一个字段的查询。现在我正在存储文件的文件路径和文件的内容,在我的搜索中我想搜索内容,但只返回文件路径。

我从这个声明开始:

var searchResults = client.Search<File>(
s => s.Query(q => q.Wildcard(w => w.Value("*" + genre + "*").OnField("fileContents"))).AllIndices().AllTypes());

searchResults.Documents 中返回结果并向其添加 .Fields:

var searchResults = client.Search<File>(
s => s.Query(q => q.Wildcard(w => w.Value("*" + genre + "*").OnField("fileContents"))).AllIndices().AllTypes().Fields(f=>f.filePath));

它在 searchResults.Documents 中没有任何内容,但它使用 searchResults.Hits.Total 正确显示了命中数。

文件类只是:

public class File
{
public string filePath { get; set; }
public string fileContents { get; set; }
}

这会生成以下 json 请求:

{
"fields": [
"filePath"
],
"query": {
"wildcard": {
"fileContents": {
"value": "*int*"
}
}
}
}

在 Sense 中运行时返回结果,在执行 searchResults.Hits.Total 时给出命中数。

但是,searchResults.Document IEnumerable 中没有记录。

是否有其他方法可以返回一个特定字段?

最佳答案

使用“来源”字段指定要拉回的字段。这是我的应用程序的示例代码,它只返回一些字段。

        var searchResults = ElasticClient.Search<AuthForReporting>(s => s
.Size(gridSortData.PageSize)
.From(gridSortData.PageIndex * gridSortData.PageSize)
.Sort(sort)
.Source(sr => sr
.Include(fi => fi
.Add(f => f.AuthEventID)
.Add(f => f.AuthResult.AuthEventDate)
.Add(f => f.AuthInput.UID)
.Add(f => f.AuthResult.CodeID)
.Add(f => f.AuthResult.AuthenticationSuccessful)
.Add(f => f.AuthInput.UserName)
.Add(f => f.AuthResult.ProductID)
.Add(f => f.AuthResult.ProductName)
.Add(f => f.AuthInput.AuthType)
.Add(f => f.AuthResult.Address.City)
.Add(f => f.AuthResult.Address.State)
.Add(f => f.AuthResult.Address.CountryCode)
.Add(f => f.AuthResult.RulesFailed)
)
)
.Query(query)
);

然后您可以通过结果中的“来源”访问这些字段:

            var finalResult = from x in searchResults.Hits
select new AlertListRow
{
AlertCode = x.Source.AlertCode,
AlertDate = x.Source.AlertDate,
AlertID = x.Id,
AlertSummary = x.Source.Subject,
AlertMessage = x.Source.Body
};

关于c# - ElasticSearch NEST 返回特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29475288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com