【发布时间】:2019-04-30 05:58:22
【问题描述】:
我有一个简单的 C# 虚拟文档。我第一次尝试使用 NEST 客户端将它索引到 elasticsearch 中。但是自动映射不起作用。
我的虚拟文档是:
class DummyRecord {
public string RecordName;
public int RecordId;
}
而主程序是:
class Program
{
static void Main(string[] args)
{
var node = new Uri("http://localhost:9200");
var settings = new ConnectionSettings(node).DefaultTypeName("_doc");
var client = new ElasticClient(settings);
var doc = new DummyRecord {
RecordName = "SOmething",
RecordId = 1
};
var creaeIndexRespone = client.CreateIndex("DummyIndex",c => c.Mappings(ms=> ms.Map<DummyRecord>(m => m.AutoMap())));
Console.WriteLine(creaeIndexRespone);
var response = client.Index(doc, idx => idx.Index("DummyIndex"));
Console.WriteLine(response);
Console.ReadKey();
}
}
我得到的只是以下输出:
通过对 PUT 的不成功低级别调用构建的无效 NEST 响应:/DummyIndex
通过对 POST 的不成功低级调用构建的无效 NEST 响应:/DummyIndex/_doc
如何让这个东西工作。在创建设置时我还有什么需要做的吗??
var settings = new ConnectionSettings(node).DefaultTypeName("_doc");
【问题讨论】:
-
为什么要映射数据?你只需要传递你的模型
-
最初 ElasticSearch 不包含映射。所以如果你试图索引一个文档,ElasticSearch 会拒绝。
-
@AdityaNadig 默认情况下,Elasticsearch 将允许您将文档索引到不存在的索引中,并将 (a) 创建索引并 (b) 从索引的第一个文档推断映射。您可以关闭自动索引创建和更改推断映射,但默认情况下都启用。在搜索用例和其他您知道如何搜索文档的情况下,定义显式映射很有用
标签: c# elasticsearch nest