我有一个字段,上面有一个自定义的分析器,可以将数据转换成小写。
分析仪定义为:
"analysis" : {
"analyzer" : {
"custom_keyword_analyzer" : {
"filter" : [
"lowercase"
],
"type" : "custom",
"tokenizer" : "keyword"
}
}
}
场上的Map如下:
"Field" : {
"type" : "text",
"fields" : {
"raw" : {
"type" : "keyword"
}
},
"copy_to" : [
"all_field"
],
"analyzer" : "custom_keyword_analyzer",
"fielddata" : true
}
当使用字段中的数据正常创建文档时,分析器工作正常。field包含小写数据,field.raw包含原始的未分析数据。
但是,如果文档是在字段中没有任何内容的情况下创建的,但随后进行了更新,则不会使用分析器,字段中包含未分析的数据,field.raw为空。
我尝试过用python手动编写批量更新的脚本,还使用了\u update \u by \u query来执行更新。在任何情况下,我都不能让分析仪处理更新后的数据。
1条答案
按热度按时间roejwanj1#
我不知道你是如何验证你的更新文件没有分析仪的影响,下面是一个完整的例子来告诉你,它的工作原理和你可以如何检查它。
根据定义进行索引Map
索引示例文档
检查倒排索引中的分析值
使用
_search
具有以下查询的终结点以上查询结果
现在使用putapi更新doc
再次使用相同的
_search
查询正如您所看到的,即使在更新了DocumentAnalyzer impact之后,它的工作方式和可验证性仍然存在,它是非常核心的功能,不能被破坏,并且可能您在验证时遗漏了一些内容,而上述方法应该为您提供一些识别错误的方法