我正在使用新创建的索引在PHP中进行upsert,因此不存在任何数据。我遇到了一个例外,我希望看到是否已经有数据但索引是新创建的。我还需要对新创建的索引进行增补吗?在添加自定义分析器之前,upsert可以正常工作。
{
"error":{
"root_cause":[
{
"type":"remote_transport_exception",
"reason":"[8902bb997443][127.0.0.1:9300][indices:data/write/update[s]]"
}
],
"type":"illegal_argument_exception",
"reason":"mapper [email.keyword] of different type, current_type [text], merged_type [keyword]"
},
"status":400
}
下面列出的是我为索引创建的代码
{
"index":"myindex",
"body":{
"settings":{
"analysis":{
"analyzer":{
"my_email_analyzer":{
"type":"custom",
"tokenizer":"uax_url_email",
"filter":[
"lowercase",
"stop"
]
}
}
}
},
"mappings":{
"properties":{
"ak_additional_recovery_email":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"ak_city_town":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"ak_first_name":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"ak_last_name":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"ak_second_additional_recovery_email":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"ak_state":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"email":{
"type":"text",
"fields":{
"keyword":{
"type":"text",
"analyzer":"my_email_analyzer"
}
}
},
"indexedHash":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"uID":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"uName":{
"type":"text",
"fields":{
"keyword":{
"type":"text",
"analyzer":"my_email_analyzer"
}
}
}
}
}
}
}
这是试图做upsert的PHP代码
$this->client->update([
'id' => $data['uID'],
'body' => [
'doc' => $data,
'upsert' => [
'uName' => $data['uName'],
'email' => $data['email'],
'ak_first_name' => $data['ak_first_name'],
'ak_last_name' => $data['ak_last_name'],
'ak_city_town' => $data['ak_city_town'],
'ak_state' => $data['ak_state']
]
],
'index' => $this->dbName,
'type' => 'general'
]);
答案 0 :(得分:0)
简单的错误!我为索引类型使用了错误的类型。我不确定为什么会发布此错误。