Elasticsearch如何设置字段数据:对所有文本字段均为true

时间:2018-12-19 12:30:43

标签: database elasticsearch nosql

有人可以告诉我如何为所有文本字段设置true。我需要根据它们进行排序,这会引发一个错误默认情况下,文本字段上的字段数据是禁用的。这是一段映射,其中街道或城市是文本字段,这会引发我这个错误。

"address": {
                    "properties": {
                        "city": {
                            "type": "text",
                            "boost": 5,
                            "analyzer": "suggestion"
                        },
                        "zip": {
                            "type": "text"
                        },
                        "street": {
                            "type": "text",
                            "boost": 7,
                            "analyzer": "suggestion"
                        }

1 个答案:

答案 0 :(得分:1)

为此,您需要更新字段的映射才能使用 elasticsearch的put映射API。

PUT yourindexName/_mapping/_doc
{
  "properties": {
     "yourfield": { 
       "type":     "text",
       "fielddata": true
     }
  }
}

尽管不建议在文本字段上启用字段数据,因为它们会占用大量堆空间。

我建议您通过此链接详细解释其背后的原理。 elasticsearch fielddata

或者,您也可以尝试使用以下字段映射:

 "yourfield": { 
    "type": "text",
    "fields": {
      "keyword": {
        "type": "keyword"
      }
    }
  }

不是纯文本,而是希望它能满足您的目的。

快乐编码:)