Home Articles

[fieldName]的Elasticsearch Bulk Indexing对象映射试图将field [null]解析为对象,但找到了具体的值

Asked
Viewed 1228 times
1

问题:Bulk Indexing抛出错误:[classIds]的对象映射试图将field [null]解析为对象,但找到了具体的值

这是我试图发布的JSON:

[{'_type': 'nodelookup', '_id': '248', '_source': {'modifiedOn': datetime.datetime(2013, 8, 28, 2, 44, 5), 'name': u'Big Words for Little People', 'sourceId': '', 'createdOn': datetime.datetime(2011, 8, 26, 16, 0, 49), 'classIds': [463, 10597], 'source': '', 'wikiInfo': {'wikiText': None, 'wikiLink': None}, 'notableInfo': {'source': u'NOTABLE_FOR', 'value': u'Book'}, 'relevance': 113L, 'urlFriendlyName': u'big-words-for-little-people', 'properties': [{'classId': 463, 'properties': [{'name': u'First Published', 'value': u'2008-09-08', 'id': 1411L}, {'name': u'Author', 'value': u'Jamie Lee Curtis', 'id': 1415L}]}, {'classId': 10597}], 'ontologyId': '248'}, '_index': 'nodes_a0f37542-3d66-4c2c-ad8c-5e59d9cdfa97'}]

忽略json中与python相关的额外字符/方法,例如datetime.datetime(),None等

尝试发布文档时出错响应:

Traceback (most recent call last):
  File "node_bulk_import_es.py", line 73, in <module>
    helpers.bulk(es, data)
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch/helpers/__init__.py", line 188, in bulk
    for ok, item in streaming_bulk(client, actions, **kwargs):
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch/helpers/__init__.py", line 160, in streaming_bulk
    for result in _process_bulk_chunk(client, bulk_actions, raise_on_exception, raise_on_error, **kwargs):
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch/helpers/__init__.py", line 132, in _process_bulk_chunk
    raise BulkIndexError('%i document(s) failed to index.' % len(errors), errors)
elasticsearch.helpers.BulkIndexError: (u'1 document(s) failed to index.', [{u'index': {u'status': 400, u'_type': u'nodelookup', u'_id': u'248', u'error': {u'reason': u'object mapping for [classIds] tried to parse field [null] as object, but found a concrete value', u'type': u'mapper_parsing_exception'}, u'_index': u'nodes_a0f37542-3d66-4c2c-ad8c-5e59d9cdfa97'}}])

我有这个索引的预定义映射,这是我的映射:

{
   "nodes_e37a1e17-962d-40fb-bae2-ff20759ab1c6": {
      "mappings": {
         "nodelookup": {
            "properties": {
               "classIds": {
                  "type": "nested"
               },
               "createdOn": {
                  "type": "date",
                  "index": "analyzed",
                  "format": "strict_date_optional_time||epoch_millis"
               },
               "modifiedOn": {
                  "type": "date",
                  "index": "analyzed",
                  "format": "strict_date_optional_time||epoch_millis"
               },
               "name": {
                  "type": "string",
                  "index": "not_analyzed",
                  "fields": {
                     "nameSimple": {
                        "type": "string",
                        "analyzer": "simple"
                     },
                     "nameStandard": {
                        "type": "string",
                        "analyzer": "standard"
                     }
                  }
               },
               "notableInfo": {
                  "properties": {
                     "source": {
                        "type": "string"
                     },
                     "value": {
                        "type": "string"
                     }
                  }
               },
               "ontologyId": {
                  "type": "integer"
               },
               "properties": {
                  "type": "nested"
               },
               "relevance": {
                  "type": "integer",
                  "index": "analyzed"
               },
               "source": {
                  "type": "string"
               },
               "sourceId": {
                  "type": "string"
               },
               "urlFriendlyName": {
                  "type": "string"
               },
               "wikiInfo": {
                  "properties": {
                     "wikiLink": {
                        "type": "string",
                        "index": "not_analyzed"
                     },
                     "wikiText": {
                        "type": "string",
                        "index": "not_analyzed"
                     }
                  }
               }
            }
         }
      }
   }
}

不知道这里有什么不对,我上周试过的代码工作正常,现在它失败了,请帮我修复这个问题 .

提前致谢!

1 Answer

  • 0

    classIds 的字段类型应为 Integer ,而不是 Nested .

    在代码中:

    @Field(type = FieldType.Integer)
    private List<Integer> classIds;
    

    在ES中:

    "classIds": {
        "type": "integer"
    }
    

    这是因为 FieldType 指的是List中包含的包含类型 . 顺便说一下,我正在使用Java .

Related