elasticsearch - ElasticSearch 5:插入数据时发生MapperParserException

标签 elasticsearch elasticsearch-plugin elasticsearch-5

我最初的映射是

{
  "vehiclemodel": {
    "properties": {
      "price": {
        "type": "double"
      }
    }
  }
}

后来我更新了下面的映射
{
  "vehiclemodel": {
    "properties": {
      "price": {
        "type": "double",
        "fields": {
          "exShowroomPrice": {
            "type": "double"
          }
        }
      }
    }
  }
}

现在,当我添加 Data1 时,它将被添加,但是当我添加 Data2 时,它将引发以下异常

数据1 :
{
  "price": 36992043     
}

数据2 :
{
  "price": {
    "exShowroomPrice": 36992043
  }
}

异​​常:
{
    'index': {
        '_index': 'notes',
        '_type': 'vehiclemodel',
        '_id': 'fb85823a-021b-468c-91d9-8db5f001ee06',
        'status': 400,
        'error': {
            'type': 'mapper_parsing_exception',
            'reason': 'failed to parse [price]',
            'caused_by': {
                'type': 'json_parse_exception',
                'reason': 'Current token (START_OBJECT) not numeric, can not use numeric value accessors\n at [Source: org.elasticsearch.common.bytes.BytesReference$MarkSupportingStreamInputWrapper@6e2393ee; line: 1, column: 277]'
            }
        }
    }
}

我的集合vehiclemodel中具有两种数据类型:MongoDB 。我正在使用mongo-connector在mongo和ES之间同步数据。当我尝试同步时,出现上述异常

最佳答案

您的映射与我认为要实现的目标不正确。

fields映射使您可以使用不同的分析器为同一字段索引(例如,请参见链接的文档以获取详细信息)。因此,就您而言,

{
    "price" : 1923
}

ES会将其存储两次,一次存储为price,一次存储在price.exShowroomPrice路径下。

您可以只添加一个完全独立的属性,而无需维护层次结构。例如,像这样的映射:
{
    "vehiclemodel": {
        "properties": {
            "price": {
                "type": "double"
            },
            "exShowroomPrice": {
                "type": "double"
            }
        }
    }
}

然后像这样发送数据:
{
    "price" : 1923
    "exShowroomPrice" : 1800
} 

我不知道mongo-connector的工作原理,但是应该有一种映射这些字段的方法。

关于elasticsearch - ElasticSearch 5:插入数据时发生MapperParserException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45508156/

相关文章:

Elasticsearch - 包含子文档(如果存在)

java - Elasticsearch 按日期聚合直方图不再适用于脚本

elasticsearch - 我可以将两个沙发床桶复制到单个弹性指数中吗?

php - Elasticsearch for laravel-获取与一个或多个类别匹配的文档?

java - Elasticsearch 2.2.0 插件安全授权

amazon-web-services - 如果它在 ec2 实例中运行,如何检查我的 Elasticsearch 是否启动

elasticsearch - 在 Elasticsearch 中索引包含数学表达式的文档的最佳方法是什么?

c# - 将标签存储到ElasticSearch中

authentication - 使用JSON Web token 授权Grafana/Elasticsearch请求?

elasticsearch - Sankt和St的同义词