【问题标题】:Getting below error in elastic search rest high level client在弹性搜索休息高级客户端中遇到错误
【发布时间】:2020-07-27 23:19:27
【问题描述】:

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

Elasticsearch 异常 [type=mapper_parsing_exception, reason=Failed 解析映射 [_doc]:根映射定义不受支持 参数:[建议: {recommendations={properties={events={type=nested, 属性={recommendationData={类型=嵌套, 属性={建议={类型=嵌套, 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);
    }

【问题讨论】:

  • 您使用的是哪个弹性搜索版本? recommendations 在映射中代表什么?
  • 我使用的是 7.6.1

标签: java elasticsearch elastic-stack resthighlevelclient


【解决方案1】:

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

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

【讨论】:

  • 是的,你是正确的建议是映射类型,但如果我删除它会引发另一个异常
  • ElasticsearchStatusException[Elasticsearch 异常 [type=mapper_parsing_exception,原因=无法解析映射 [_doc]:没有为字段 [properties]] 指定类型];嵌套:ElasticsearchException[Elasticsearch exception [type=mapper_parsing_exception, reason=No type specified for field [properties]]];
  • 您似乎使用的是旧客户端。确保客户端版本与 elastisearch 版本匹配
  • 不是我……对我来说问题已解决,你的答案是正确的,我应该使用旧版本。
猜你喜欢
  • 2020-03-19
  • 2018-08-16
  • 2019-07-13
  • 1970-01-01
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多