使用 require 'nokogiri'
def see_error(response_xml.xml)
doc = Nokogiri::XML(File.open(response_xml.xml))
#it shows me the file
doc.xpath('//dms:ComplexResponse/ErrorCode/ErrorDescription')
end
将分析仪放置到映射中时发生冲突。
但是映射中没有分析器。
AtomicReference<Boolean> first = new AtomicReference<Boolean>(Boolean.TRUE);
stream.forEach(e ->
System.out.println("First == " + first.getAndUpdate(b -> false)));
PUT /job/_mapping/doc/
PUT /job/_mapping/doc/
{
"properties":{
"title": {
"type": "text",
"analyzer":"ik_smart",
"search_analyzer":"ik_smart"
}
}
}
输出配置是这样的。
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Mapper for [title] conflicts with existing mapping in other types:\n[mapper [title] has different [analyzer]]"
}
],
"type": "illegal_argument_exception",
"reason": "Mapper for [title] conflicts with existing mapping in other types:\n[mapper [title] has different [analyzer]]"
},
"status": 400
}
答案 0 :(得分:0)
您无法在elasticsearch中更新映射,可以添加映射,但不能更新映射。 Elasticsearch在索引编制时使用映射,这就是为什么您无法更新现有字段的映射的原因。分析器是映射的一部分,实际上,如果您不指定默认值,则分析器会告诉Elastic如何索引文档。
1)使用新映射(包括分析器)创建新索引 2)将文档从现有索引重新索引到新索引(https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html)
答案 1 :(得分:0)
更新映射:
一旦文档被索引到索引,即在给定类型下生成映射,就像在我们的情况下EmployeeCode
,EmployeeName
和isDevelopers
'的映射是在类型“ customtype
”,之后我们将无法对其进行修改。如果我们要修改它,我们需要先删除索引,然后手动应用修改后的映射,然后对数据重新索引。但是,如果要在给定类型下添加新属性,则可行。例如,我们的文档在类型“ customtype”下附加了索引“ inkashyap-1002”,如下所示:
{
"inkashyap-1002": {
"mappings": {
"customtype": {
"properties": {
"EmployeeCode": {
"type": "long"
},
"isDeveloper": {
"type": "boolean"
},
"EmployeeName": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
现在让我们添加另一个属性“ Grade”:
curl -XPUT localhost:9200/inkashyap-1002(IndexName)/customtype(TypeName)/2 — d '{
"EmployeeName": "Vaibhav Kashyap",
"EmployeeCode": 13629,
"isDeveloper": true,
"Grade": 5
}'
现在点击GET映射API。在结果中,您可以看到还有一个名为“成绩”的字段。
常见错误:
到目前为止,在索引“ inkashyap-1002”中,我们已经索引了2个文档。两个文档的“ EmployeeCode”字段具有相同的类型,并且类型为“ Long”。现在,让我们尝试为以下文档建立索引:
curl -XPUT localhost:9200/inkashyap-1002/customtype/3 -d '{
"EmployeeName": "Vaibhav Kashyap",
"EmployeeCode": "onethreesixtwonine",
"isDeveloper": true,
"Grade": 5
}'
请注意,此处的“ EmployeeCode”以字符串类型给出,这表明它是一个字符串字段。对以上请求的响应如下:
{
"error": {
"root_cause": [
{
"type": "mapper_parsing_exception",
"reason": "failedtoparse[
EmployeeCode
]"
}
],
"type": "mapper_parsing_exception",
"reason": "failedtoparse[
EmployeeCode
]",
"caused_by": {
"type": "number_format_exception",
"reason": "Forinputstring: \"onethreesixtwonine\""
}
},
"status": 400
}
在上述响应中,我们在字段“ EmployeeCode”上看到错误“ mapper_parsing_exception”。这表明此处的期望字段是另一种类型,而不是字符串。在这种情况下,请使用适当的类型重新索引文档