【发布时间】:2018-08-12 04:27:11
【问题描述】:
第一次使用 ElasticSearch(使用 NEST 作为包装器)。我想在外部 ElasticSearch 数据库中进行搜索。
我只想对名为cvrNummer 的特定字段运行测试查询。我有以下代码,因为:The type arguments for method 'ElasticSearch.Search<T> .. ', cannot be inferred from the usage.
我认为这是因为我无法指定特定类型的类。挑战是我不知道那个。
我的问题是:我如何运行下面的查询,而不确切知道我得到了什么(以制作特定类型的模型)?如果我需要那个模型,在缺少文档的情况下如何“制作”那个模型?
我的代码:
var settings = new ConnectionSettings(new Uri(_path)).
BasicAuthentication(_username,_password);
var client = new ElasticClient(settings);
var es_query = new TermsQuery
{
Name = "named_query",
Boost = 1.1,
Field = "cvrNummer",
Terms = new string[] { "36406208" }
};
client.Search(es_query);
只有我有的文档:
curl -u "<brugernavn>:<password>" -XPOST http://URL -d'
{ "from" : 0, "size" : 1,
"query": {
"term": {
"cvrNummer": VALUE
}
}
}
编辑更多数据:
来自文档的文档模型:
curl -u "<brugernavn>:<password>" -XGET http://distribution.virk.dk/cvr-permanent/_mapping
完整搜索示例:
curl -u "<brugernavn>:<password>" -XPOST http://distribution.virk.dk/cvr-permanent/_search -d'
{ "from" : 0, "size" : 1,
"query": {
"term": {
"cvrNummer": 10961211
}
}
}
'
【问题讨论】:
-
试试这样的:
client.Search<dynamic>(s => s.From(0).Size(1).Query(q => q.Terms(t => t.Name("named_query").Boost(1.1f).Field("cvrNummer").Terms("36406208")))); -
@Evk 谢谢!这将导致:“'索引名称对于给定类型为空,并且未设置默认索引。使用 ConnectionSettings.DefaultMappingFor
() 映射索引名称或使用 ConnectionSettings.DefaultIndex() 设置默认索引。'”。任何想法? :-) -
curl“文档”中的完整 url 看起来如何(路径部分,在域之后)?
-
@Evk 刚刚更新了更多数据 :-) 感谢提问
-
那就试试
s => s.From(0).Size(1).Index("cvr-permanent").AllTypes().(... the rest of the above...)
标签: c# elasticsearch nest elasticsearch-net