空值为 Elasticsearch 完成建议字段生成 mapper_parsing_exception

Empty value generates mapper_parsing_exception for Elasticsearch completion suggester field

我有一个 name 字段,它是一个完成建议器,索引生成一个 mapper_parsing_exception 错误,说明 value must have a length > 0.

该字段中确实存在一些空值。我该如何容纳他们?

ignore_malformedpropertiesindex 级别没有任何效果。

我尝试在分析器中过滤掉空字符串,设置最小长度:

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"
        }
      }
    }
}

这确实感觉应该很简单。有办法吗?

谢谢!

我遇到过同样的问题。经过一些研究,在我看来,目前唯一的选择是更改数据(例如,用一些虚拟的非空值替换空值)before indexing.

不过也有个好消息。这个问题 exists on GitHub and was resolved 大约一个月前。计划在6.4.0版本发布。