使用 NEST 无法将文档自动映射到 elasticsearch
Automapping document into elasticsearch is not working using NEST
我有一个简单的 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();
}
}
我得到的只是以下输出:
Invalid NEST response built from a unsuccessful low level call on PUT: /DummyIndex
Invalid NEST response built from a unsuccessful low level call on POST: /DummyIndex/_doc
如何让这个东西工作。在创建设置时我还需要做些什么吗??
var settings = new ConnectionSettings(node).DefaultTypeName("_doc");
启动您的最终模型,然后将该模型传递给 elastic 以对其进行索引。
根据 Elastic 的文档,您可以像这样索引您的数据。
var person = new Person
{
Id = 1,
FirstName = "Martijn",
LastName = "Laarman"
};
var indexResponse = client.IndexDocument(person);
已更新:Index() 与 IndexDocument
IndexDocument()
用于简单地索引单个文档。
Index()
如果您需要设置额外的参数,可以使用此方法。
查看 Elastic 文档
两件事
- 索引名称需要小写,即
"DummyIndex"
-> "dummyindex"
DummyRecord
成员需要是属性而不是字段
您可以检查对任何 API 调用的响应是否有效,并在需要时采取措施
var client = new ElasticClient();
var createIndexResponse = client.CreateIndex(defaultIndex, c => c
.Mappings(m => m
.Map<DummyRecord>(mm => mm
.AutoMap()
)
)
);
if (!createIndexResponse.IsValid) {
Console.WriteLine(createIndexResponse.DebugInformation);
}
我有一个简单的 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();
}
}
我得到的只是以下输出:
Invalid NEST response built from a unsuccessful low level call on PUT: /DummyIndex
Invalid NEST response built from a unsuccessful low level call on POST: /DummyIndex/_doc
如何让这个东西工作。在创建设置时我还需要做些什么吗??
var settings = new ConnectionSettings(node).DefaultTypeName("_doc");
启动您的最终模型,然后将该模型传递给 elastic 以对其进行索引。
根据 Elastic 的文档,您可以像这样索引您的数据。
var person = new Person
{
Id = 1,
FirstName = "Martijn",
LastName = "Laarman"
};
var indexResponse = client.IndexDocument(person);
已更新:Index() 与 IndexDocument
IndexDocument()
用于简单地索引单个文档。
Index()
如果您需要设置额外的参数,可以使用此方法。
查看 Elastic 文档
两件事
- 索引名称需要小写,即
"DummyIndex"
->"dummyindex"
DummyRecord
成员需要是属性而不是字段
您可以检查对任何 API 调用的响应是否有效,并在需要时采取措施
var client = new ElasticClient();
var createIndexResponse = client.CreateIndex(defaultIndex, c => c
.Mappings(m => m
.Map<DummyRecord>(mm => mm
.AutoMap()
)
)
);
if (!createIndexResponse.IsValid) {
Console.WriteLine(createIndexResponse.DebugInformation);
}