當我試圖禁用ElasticSearch設置中的動態映射時,我遇到了錯誤。我正在使用ElasticSearch 1.7版本進行實施。動態映射禁用在ElasticSearch中不起作用
堆棧跟蹤:
8151 [main] WARN org.apache.hadoop.mapred.YarnChild - Exception running child : org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest: Found unrecoverable error [10.74.51.71:9200] returned Not Found(404) - [TypeMissingException[[test_2017051222] type[[vehicle, trying to auto create mapping, but dynamic mapping is disabled]] missing]]; Bailing out..
at org.elasticsearch.hadoop.rest.RestClient.retryFailedEntries(RestClient.java:207)
at org.elasticsearch.hadoop.rest.RestClient.bulk(RestClient.java:170)
at org.elasticsearch.hadoop.rest.RestRepository.tryFlush(RestRepository.java:225)
at org.elasticsearch.hadoop.rest.RestRepository.flush(RestRepository.java:248)
at org.elasticsearch.hadoop.rest.RestRepository.doWriteToIndex(RestRepository.java:187)
at org.elasticsearch.hadoop.rest.RestRepository.writeToIndex(RestRepository.java:163)
at org.elasticsearch.hadoop.mr.EsOutputFormat$EsRecordWriter.write(EsOutputFormat.java:151)
at org.apache.hadoop.mapred.ReduceTask$NewTrackingRecordWriter.write(ReduceTask.java:566)
at org.apache.hadoop.mapreduce.task.TaskInputOutputContextImpl.write(TaskInputOutputContextImpl.java:89)
at org.apache.hadoop.mapreduce.lib.reduce.WrappedReducer$Context.write(WrappedReducer.java:105)
at org.apache.hadoop.mapreduce.Reducer.reduce(Reducer.java:150)
at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:171)
at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:635)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:390)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
設置片段:
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1,
"index.query.default_field":"test",
"index.refresh_interval" : "5s",
"index.mapper.dynamic": false ,
"analysis": {
"filter": {
"ngram_filter": {
"type": "ngram",
"min_gram": 2,
"max_gram": 18,
"token_chars": [
"letter",
"digit"
]
}
},
"analyzer": {
"ngram_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"ngram_filter"
]
}
}
}
}
我看到的是動態映射,在設置中禁用對ES點,但作業將失敗。我有一個avro json映射文件和es json映射文件,其中avro json映射文件是超集,而es json映射文件是子集。我不希望超集映射文件中的所有字段都反映在ES索引上,而只是轉儲位於子集映射文件中的字段。我做錯了,還是有其他的方式嗎?
謝謝。
' 「映射」:{ 「測試」:{ 「動態」: 「假」, 「屬性」:{ 「field1的」:{ 「類型」: 「串」, 「索引」: 「分析」 }, 「FIELD2」:{ 「類型」: 「串」, 「索引」: 「not_analyzed」 }, 「字段3」:{ 「類型」: 「串」, 「索引「:」not_analyzed「 }, 」field4「:{ 」type「:」string「, 」index「:」analysed「 }, 「字段5」:{ 「類型」: 「串」, 「指數」: 「分析」 }} } } '沒有工作。 – Blank
我用一個例子編輯了這篇文章。希望有所幫助。 – YunujD