gpt4 book ai didi

c# - NEST无法找到elasticsearch可以找到的文档

转载 作者:行者123 更新时间:2023-12-02 21:32:33 25 4
gpt4 key购买 nike

这是我搜索文档的方式,但它不返回任何结果:

var results = ElasticClient.Search<ClusterInstance>(body => body
.AllIndices()
.Size(500)
.Query(query => query
.QueryString(qs => qs.Query("MyTestName"))
)
);
resultobject.clusterinstances = results.Documents.ToList();

当我在 Elasticsearch 中使用它作为搜索查询时,我得到了我需要的结果(其中 2 个)。

{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "MyTestName"
}
}
],
"must_not": [],
"should": []
}
},
"from": 0,
"size": 10,
"sort": [],
"facets": {}
}

ElasticClient 创建:

private static ElasticClient ElasticClient
{
get
{
var uri = new Uri("http://localhost:9200")
return new ElasticClient(new ConnectionSettings(uri));
}
}

索引:

foreach (var cluster in db.ClusterInstances.Where(a => a.Active.Equals(true)))
{
client.Index(cluster, "cmdbcli", "clusters", cluster.ClusterInstanceID);
}

版本:NEST - Elasticsearch 客户端 0.12.0 (NuGet)

最佳答案

虽然 Chris Mantle 的说法是正确的,即查询并不完全匹配,但它们在功能上应该几乎是等效的。

您的搜索正在对 /_all/clusterinstances/_search 进行搜索,您可能想要的是:

.Search(s=>s
.AllIndices()
.AllTypes()
...

.Search(s=>s
.AllIndices()
.Type("clusters")
...

NEST 默认情况下通过小写和复数 CLR 类型名来推断 elasticsearch 类型。

如果您像这样设置连接设置:

var settings = new ConnectionSettings(uri)
.SetDefaultIndex("cmdbcli")
.MapDefaultTypeNames(d=>d
.Add(typeof(ClusterInstance), "clusters")
)
....

然后

.Search<ClusterInstance>(s=>s.Query())

默认为/cmdbcli/clusters/_search

关于c# - NEST无法找到elasticsearch可以找到的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22022541/

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