elasticsearch.exceptions.RequestError:RequestError(400,'mapper_parsing_exception','在字段[text]上声明的[string]类型没有处理程序)

时间:2019-01-10 03:40:04

标签: python elasticsearch

我使用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?

2 个答案:

答案 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参数中进行设置。