我使用elasticsearch python api创建映射,但出现了一些错误:
es = Elasticsearch("localhost:9200")
request_body = {
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
},
'mappings': {
'examplecase': {
'properties': {
'tbl_id': {'index': 'not_analyzed', 'type': 'string'},
'texts': {'index': 'analyzed', 'type': 'string'},
}
}
}
}
es.indices.create(index='example_index', body=request_body)
它显示elasticsearch.exceptions.RequestError: RequestError(400, 'mapper_parsing_exception', 'No handler for type [string] declared on field [texts]')
,我发现一些解决方案,他们说:在字段类型中使用text
而不是string
,但是它也出错了:elasticsearch.exceptions.RequestError: RequestError(400, 'mapper_parsing_exception', 'Failed to parse mapping [examplecase]: Could not convert [texts.index] to boolean'). The elasticsearch version is
elasticsearch -6.5.4 . How can I deal with it?
答案 0 :(得分:1)
这个
“索引”:“已分析”或“索引”:“未分析”
是较早的Elasticsearch版本映射,不需要。
您需要做的就是对分析的字符串字段使用“ 文本”,对未分析的文本字段使用“ 关键字”,例如:
es = Elasticsearch("localhost:9200")
request_body = {
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
},
'mappings': {
'examplecase': {
'properties': {
'tbl_id': {'type': 'keyword'},
'texts': {'type': 'text'},
}
}
}
}
es.indices.create(index='example_index', body=request_body)
在此处查看Elastic docs中的参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
答案 1 :(得分:-1)
请参见this。映射中的index
设置配置不正确。它是一个映射参数,只能设置为true或false。您无法在properties参数中进行设置。