elasticsearch之mappings parameters


目錄

ignore_above

長度超過ignore_above設置的字符串將不會被索引或存儲(個人認為會存儲,但不會為該字段建立索引,也就是該字段不能被檢索)。 對於字符串數組,ignore_above將分別應用於每個數組元素,並且不會索引或存儲比ignore_above更長的字符串元素。

PUT w1
{
  "mappings": {
    "doc":{
      "properties":{
        "t1":{
          "type":"keyword",
          "ignore_above": 5
        },
        "t2":{
          "type":"keyword",
          "ignore_above": 10   ①
        }
      }
    }
  }
}
PUT w1/doc/1
{
  "t1":"elk",          ②
  "t2":"elasticsearch"  ③
}
GET w1/doc/_search   ④
{
  "query":{
    "term": {
      "t1": "elk"
    }
  }
}

GET w1/doc/_search  ⑤
{
  "query": {
    "term": {
      "t2": "elasticsearch"
    }
  }
}

①,該字段將忽略任何超過10個字符的字符串。
②,此文檔已成功建立索引,也就是說能被查詢,並且有結果返回。
③,該字段將不會建立索引,也就是說,以該字段作為查詢條件,將不會有結果返回。
④,有結果返回。
⑤,則將不會有結果返回,因為t2字段對應的值長度超過了ignove_above設置的值。

該參數對於防止Lucene的術語字節長度限制也很有用,限制長度是32766
注意,該ignore_above設置可以利用現有的領域進行更新PUT地圖API
對於值ignore_above是字符數,但Lucene的字節數為單位。如果您使用帶有許多非ASCII字符的UTF-8文本,您可能需要設置限制,32766 / 4 = 8191因為UTF-8字符最多可占用4個字節。
如果我們觀察上述示例中,我們可以看到在設置映射類型時,字段的類型是keyword,也就是說ignore_above參數僅針對於keyword類型有用。
那么如果字符串的類型是text時能用ignore_above嗎,答案是能,但要特殊設置:

PUT w2
{
  "mappings": {
    "doc":{
      "properties":{
        "t1":{
          "type":"keyword",
          "ignore_above":5
        },
        "t2":{
          "type":"text",
          "fields":{
            "keyword":{
              "type":"keyword",
              "ignore_above": 10
            }
          }
        }
      }
    }
  }
}

PUT w2/doc/1
{
  "t1":"beautiful",
  "t2":"beautiful girl"
}

GET w2/doc/_search  ①
{
  "query": {
    "term": {
      "t1": {
        "value": "beautiful"
      }
    }
  }
}

GET w2/doc/_search  ②
{
  "query": {
    "term": {
      "t2": "beautiful"
    }
  }
}

①,不會有返回結果。
②,有返回結果,因為該字段的類型是text
但是,當字段類型設置為text之后,ignore_above參數的限制就失效了。


歡迎斧正,that's all see also:[官網7.0:ignore_above](https://www.elastic.co/guide/en/elasticsearch/reference/7.0/ignore-above.html) | [ignore_above](https://www.elastic.co/guide/en/elasticsearch/reference/7.0/ignore-above.html)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM