Elasticsearch C# NEST IndexMany Children
Elasticsearch C# NEST IndexMany Children
我在使用 NEST 中的 批量方法 将 索引 child 记录 到 Elasticsearch 时遇到问题。
我正在使用 ElasticSearch 2.3.5 和 NEST 2.4.4
我已经映射了一个索引:
myindex
{
"mappings": {
"elasticparent": {},
"elasticchild": {
"_parent": {
"type": elasticparent
}
}
}
}
并且我使用 IndexMany 方法对 parent objects 进行了索引:
client.IndexMany<elasticparent>(batch, "myindex");
一切正常。
我现在想使用 IndexMany 索引 children。到目前为止,这是我尝试过的方法:
client.Bulk(s => s.IndexMany(IenumerableOfChild,
(bulkDescriptor, record) =>
bulkDescriptor.Index("myindex").Type("elasticchild").Parent(record.Id)));
child 和 parent 共享相同的 Id 整数。
我没有收到错误,但是 children 永远不会被索引,文档也永远不会添加到总索引数中。
单独索引它们有效:
foreach (var child in IenumerableOfChild
{
client.Index(child, descriptor => descriptor
.Parent(child.Id.ToString()).Index("myindex"));
}
我不想单独索引质量数。我想使用 IndexMany 对 child 记录进行批量索引。有人可以指出我做错了什么吗?
经过进一步调查,弹性服务器返回超时。通过一次将请求批处理到 1000 个项目,它现在可以正常工作了!
foreach (IEnumerable<object> batch in objects.Batch(1000))
{
var indexResponse = client.Bulk(s => s.IndexMany(batch,
(bulkDescriptor, record) =>
bulkDescriptor.Index("myindex").Parent(record.Id.ToString()).Document(record).Type("elasticchild").Id(record.Id.ToString())));
Console.WriteLine(indexResponse);
}
您需要补充。查询的路由字段,以便将子项与父项映射。
像下面这样:-
var indexResponse = elasticService.Bulk(s => s.IndexMany<Child>
(childreslist,
(bulkDescriptor, record) => bulkDescriptor.Index(Constants.INDEX_NAME)
.Type("_doc")
.Routing(new
Routing(record.id.ToString()))
));
我在使用 NEST 中的 批量方法 将 索引 child 记录 到 Elasticsearch 时遇到问题。
我正在使用 ElasticSearch 2.3.5 和 NEST 2.4.4
我已经映射了一个索引:
myindex
{
"mappings": {
"elasticparent": {},
"elasticchild": {
"_parent": {
"type": elasticparent
}
}
}
}
并且我使用 IndexMany 方法对 parent objects 进行了索引:
client.IndexMany<elasticparent>(batch, "myindex");
一切正常。
我现在想使用 IndexMany 索引 children。到目前为止,这是我尝试过的方法:
client.Bulk(s => s.IndexMany(IenumerableOfChild,
(bulkDescriptor, record) =>
bulkDescriptor.Index("myindex").Type("elasticchild").Parent(record.Id)));
child 和 parent 共享相同的 Id 整数。
我没有收到错误,但是 children 永远不会被索引,文档也永远不会添加到总索引数中。
单独索引它们有效:
foreach (var child in IenumerableOfChild
{
client.Index(child, descriptor => descriptor
.Parent(child.Id.ToString()).Index("myindex"));
}
我不想单独索引质量数。我想使用 IndexMany 对 child 记录进行批量索引。有人可以指出我做错了什么吗?
经过进一步调查,弹性服务器返回超时。通过一次将请求批处理到 1000 个项目,它现在可以正常工作了!
foreach (IEnumerable<object> batch in objects.Batch(1000))
{
var indexResponse = client.Bulk(s => s.IndexMany(batch,
(bulkDescriptor, record) =>
bulkDescriptor.Index("myindex").Parent(record.Id.ToString()).Document(record).Type("elasticchild").Id(record.Id.ToString())));
Console.WriteLine(indexResponse);
}
您需要补充。查询的路由字段,以便将子项与父项映射。 像下面这样:-
var indexResponse = elasticService.Bulk(s => s.IndexMany<Child>
(childreslist,
(bulkDescriptor, record) => bulkDescriptor.Index(Constants.INDEX_NAME)
.Type("_doc")
.Routing(new
Routing(record.id.ToString()))
));