-1

当我尝试使用创建索引请求创建映射时,出现以下错误。

Elasticsearch 异常 [type=mapper_parsing_exception, reason=Failed to parse mapping [_doc]: 根映射定义有不受支持的参数:[recommendations : {recommendations={properties={events={type=nested, properties={recommendationData={type=nested) , 属性={recommendations={type=nested, properties={recommendationType={type=keyword}}}}}}}}}}]]

并且映射是

{
  "mappings": {
    "recommendations": {
      "properties": {
        "events": {
          "type": "nested",
          "properties": {
            "recommendationData": {
              "type": "nested",
              "properties": {
                "recommendations": {
                  "type": "nested",
                  "properties": {
                    "recommendationType": {
                      "type": "keyword"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

java代码是

private void checkAndCreateDocumentMapping() throws IOException {

        CreateIndexRequest createIndexRequest = new CreateIndexRequest(this.getIndexName());
        String indexString = getStringFromFile("nested" + ".mapping");
        createIndexRequest.source(indexString, XContentType.JSON);
        client.indices().create(createIndexRequest, RequestOptions.DEFAULT);
    }
4

1 回答 1

1

请注意,elasticsearch 不再支持多个映射,因此不再需要传递映射名称。假设recommendations是映射的名称,它可以改为用作索引的名称。因此,创建索引的正确 dsl 应该是,

PUT recommendations
{
  "mappings": {
    "properties": {
      "events": {
        "type": "nested",
        "properties": {
          "recommendationData": {
            "type": "nested",
            "properties": {
              "recommendations": {
                "type": "nested",
                "properties": {
                  "recommendationType": {
                    "type": "keyword"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
于 2020-04-15T04:05:43.380 回答