Elasticsearch:parent/child 缺少 85% 的索引关系
Elasticsearch: parent/child missing 85% of indexed relationships
对于我的索引,我在 Elasticsearch
中使用 parent/child
所以我有以下内容:
- 索引:esi
- 类型:关系 (907)、分类 (9300)、检查 (10581)
我的映射如下:
PUT /esi
{
"mappings": {
"relation": {},
"classification": {
"_parent": {
"type": "relation"
}
},
"inspection":
{
"_parent": {
"type": "classification"
}
}
}
}
我索引所有数据:关系、分类和检查。我对每个检查的索引如下:
PUT /esi/inspection/i20862?parent=c12277
{
"date": "2015-06-06"
}
我用 Sense 检查我的索引,是的,所有类型都填充了正确数量的文档。现在奇怪的是:
我已经为 10581 项检查编制了索引。他们每个人都有一个 parent:我用上面的 parent 为每个检查编制了索引。 parent 存在。
现在,我使用以下命令进行检查:
POST /esi/inspection/_search
{
"query":
{
"has_parent":
{
"parent_type": "classification",
"query":
{
"match_all":
{
}
}
}
}
}
结果:1556 而不是 10581
当我单独检查检验类型时,得到的结果是 10581(右)。但是1556是匹配到它的parent.
我不明白为什么索引后 parent 没有匹配项,而给定的 parent 存在。
我不得不将路由参数添加到grandchildren,所以:
PUT /esi/inspection/i20862?parent=c12277&routing=r595
{
"date": "2015-06-06"
}
这确保 grandchildren parent/childs/grandchildren 存储在同一个分片中。
只有 parent/child,parent/child 总是存储在同一个分片中。当 child 为 parent 时,分片可以不同。这就是为什么你需要路由参数。
文档:https://www.elastic.co/guide/en/elasticsearch/guide/current/grandparents.html
对于我的索引,我在 Elasticsearch
中使用 parent/child所以我有以下内容:
- 索引:esi
- 类型:关系 (907)、分类 (9300)、检查 (10581)
我的映射如下:
PUT /esi
{
"mappings": {
"relation": {},
"classification": {
"_parent": {
"type": "relation"
}
},
"inspection":
{
"_parent": {
"type": "classification"
}
}
}
}
我索引所有数据:关系、分类和检查。我对每个检查的索引如下:
PUT /esi/inspection/i20862?parent=c12277
{
"date": "2015-06-06"
}
我用 Sense 检查我的索引,是的,所有类型都填充了正确数量的文档。现在奇怪的是:
我已经为 10581 项检查编制了索引。他们每个人都有一个 parent:我用上面的 parent 为每个检查编制了索引。 parent 存在。
现在,我使用以下命令进行检查:
POST /esi/inspection/_search
{
"query":
{
"has_parent":
{
"parent_type": "classification",
"query":
{
"match_all":
{
}
}
}
}
}
结果:1556 而不是 10581
当我单独检查检验类型时,得到的结果是 10581(右)。但是1556是匹配到它的parent.
我不明白为什么索引后 parent 没有匹配项,而给定的 parent 存在。
我不得不将路由参数添加到grandchildren,所以:
PUT /esi/inspection/i20862?parent=c12277&routing=r595
{
"date": "2015-06-06"
}
这确保 grandchildren parent/childs/grandchildren 存储在同一个分片中。
只有 parent/child,parent/child 总是存储在同一个分片中。当 child 为 parent 时,分片可以不同。这就是为什么你需要路由参数。
文档:https://www.elastic.co/guide/en/elasticsearch/guide/current/grandparents.html