我有一个name
字段,它是一个完成提示,索引编制会产生一个mapper_parsing_exception
错误,指出value must have a length > 0
。
在此字段中确实有一些空值。我该如何容纳他们?ignore_malformed
在properties
或index
级别均无效。
我尝试在分析器中过滤出空字符串,并设置了最小长度:
PUT /genes
{
"settings": {
"analysis": {
"filter": {
"remove_empty": {
"type": "length",
"min": 1
}
},
"analyzer": {
"keyword_lowercase": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"lowercase",
"remove_empty"
]
}
}
}
},
"mappings": {
"gene": {
"name": {
"type": "completion",
"analyzer": "keyword_lowercase"
}
}
}
}
}
或过滤空字符串作为停用词:
"remove_empty": {
"type": "stop",
"stopwords": [""]
}
尝试将过滤器应用于名称映射会生成不受支持的参数错误:
"mappings": {
"gene": {
"name": {
"type": "completion",
"analyzer": "keyword_lowercase",
"filter": "remove_empty"
}
}
}
}
这种感觉应该很简单。有没有办法做到这一点?
谢谢!
最佳答案
我也遇到过同样的问题。经过一些研究,在我看来,当前唯一的选择是在索引之前更改数据(例如,将空值替换为一些虚拟的非空值)。
但也有个好消息。 GitHub上的exists问题,大约一个月前是resolved。计划在6.4.0版中发布。
关于elasticsearch - 空值会为Elasticsearch完成建议者字段生成mapper_parsing_exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48193721/