我尝试用Python在Elasticsearch中创建我的第一个索引。我一直收到以下类型的错误:“未知参数[analyzer] on mapper [institution] of type [text]”或“索引尚未在mapper中配置”。我尝试了几种方法用“put_settings”和“put_mappings”方法创建索引,但都不起作用。我使用Python API版本7和Docker上的Elasticsearch 7.12.0。以下是我的代码。
def create_expert_index(index_name="expert_query"):
es = connect()
if es.indices.exists(index=index_name):
es.indices.delete(index=index_name, ignore=[400, 404])
mappings = {
"settings": {
"analysis": {
"analyser": {
"standard_asciifolding": {
"type": "custom",
"tokenizer": "standard",
"filter": ["asciifolding", "lowercase"]
}
}
}
},
"mappings": {
"properties":
{
"first_name":
{
"type": "text",
"analyser": "standard_asciifolding"
},
"last_name":
{
"type": "text",
"analyser": "standard_asciifolding"
},
"email":
{
"type": "text",
"analyser": "standard_asciifolding"
},
"specializations":
{
"type": "text",
"analyser": "standard_asciifolding"
},
"institution":
{
"type": "text",
"analyser": "standard_asciifolding"
}
}
}
}
es.indices.create(index_name, body=mappings)
尝试使用create、put_settings和put_mappings方法创建索引。我希望索引能够创建。
1条答案
按热度按时间rur96b6h1#
你拼错了“analyzer”--你写的是“s”--“analyzer”。请求的其余部分看起来没问题。考虑在你的实现中添加Kibana,并用开发工具测试你的请求。这是纠正这些错误的一个非常简单的方法。这就是我发现这个拼写错误的原因。