联接字段(多类型索引错误)-Elasticsearch

时间:2018-09-20 09:36:38

标签: json elasticsearch curl virtualbox

我想创建一个带有'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:问题标题已更新。

2 个答案:

答案 0 :(得分:0)

好的,这是交易。

我上面列出的版本似乎不具有join字段,因此我选择了升级。我是通过运行以下命令来做到这一点的:

  1. echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
  2. sudo apt-get update
  3. 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

您还必须重命名文档类型名称,因为它不能以“ _”开头。