我想创建一个带有'join'字段的索引。我使用了ES文档提供的确切curl命令:
curl -X PUT "localhost:9200/my_index" -H 'Content-Type:
application/json' -d'
{
"mappings": {
"_doc": {
"properties": {
"my_join_field": {
"type": "join",
"relations": {
"question": "answer"
}
}
}
}
}
}
'
这是导致的错误:
{
"error" : {
"root_cause" : [
{
"type" : "mapper_parsing_exception",
"reason" : "Failed to parse mapping [_doc]: cannot create join field [my_join_field] on multi-types index [my_index]"
}
],
"type" : "mapper_parsing_exception",
"reason" : "Failed to parse mapping [_doc]: cannot create join field [my_join_field] on multi-types index [my_index]",
"caused_by" : {
"type" : "illegal_state_exception",
"reason" : "cannot create join field [my_join_field] on multi-types index [my_index]"
}
},
"status" : 400
}
由于要指定一个没有其他类型的新索引,我正在努力理解错误(并努力解决该错误)。如果我打错了/输入错误,请随时纠正我:D
。
Edit
:运行此命令时使用的版本是5.6.11,但是我当前正在尝试运行6.4.1。我不确定这是否可以解决错误。
Edit
:问题标题已更新。
答案 0 :(得分:0)
好的,这是交易。
我上面列出的版本似乎不具有join字段,因此我选择了升级。我是通过运行以下命令来做到这一点的:
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
sudo apt-get update
sudo apt-get install elasticsearch
Tee-hee,另一个浪费时间的问题。
T. Okai
答案 1 :(得分:0)
在索引设置中将mapping.single_type
设置为true时,可以在ElasticSearch5上使用联接字段。 (请参阅https://www.elastic.co/guide/en/elasticsearch/reference/5.6/parent-join.html#parent-join)
您还必须重命名文档类型名称,因为它不能以“ _”开头。