【发布时间】:2017-11-27 14:13:49
【问题描述】:
这可能只是我完全监督了明显的“缺失环节”。无论如何:我有一个弹性搜索端点http://distribution.virk.dk/cvr-permanent/virksomhed/_search,我想查询这个端点。相当简单。
据我了解,NEST 使您能够对与 elasticsearch 索引的交互进行强类型化,这与 Visual Studio 在您添加对相应服务的引用时为 asmx/svc 创建类型的方式非常相似。
所以我的问题是:我到底如何从知道弹性搜索索引的端点到使类型与索引匹配并在索引上进行查询?我认为答案是:“使用 NEST!”,但我能找到的所有教程都假设您有一个从 c#-type 生成的本地索引,然后它会为您提供一个在查询中使用的类型。但是,当您必须从“远程”索引构建类型时该怎么办?
提前感谢任何指向正确方向的答案!
更新:
我已检索到索引中的映射,我已将其简化为以下字段中的“cvrNummer”:
{
"cvr-permanent-prod-20170205" : {
"mappings" : {
"virksomhed" : {
"_size" : {
"enabled" : true
},
"properties" : {
"Vrvirksomhed" : {
"properties" : {
"type" : "long"
},
"cvrNummer" : {
"type" : "string"
},
}
}
},
}
}
}
}
}
然后我做了以下课程:
[ElasticsearchType(Name = "virksomhed")]
public class Company
{
[Text(Name = "cvrNummer")]
public string cvrNumber { get; set; }
}
现在,我要做的(首先)就是搜索具有特定值 f 的 cvrNummer 的文档。前任。 “12883404”。我在一个简单的控制台应用程序中有以下代码:
var node = new Uri("http://distribution.virk.dk/cvr-
permanent/virksomhed/_search");
var settings = new ConnectionSettings(node).DefaultIndex("defaultindex");
settings.BasicAuthentication("username", "password");
var client = new ElasticClient(settings);
然后我尝试以下非常简单的请求:
var searchResponse = client.Search<Company>(s => s
.Type<Company>()
.Query(q => q
.Match(m => m
.Field(f => f.cvrNumber)
.Query("12883404")
我收到“400 错误请求”。我到底做错了什么?
【问题讨论】:
标签: c# nest elasticsearch-5