天天看點

ElasticSearch(六)-映射和分析過程

1.資料類型差異

    不同類型的索引方式是不一樣的,導緻查詢結果不一樣;

2.确切值和全文

  确切值是确定的,比如foo和Foo不同

  全文文本常常被稱為高度結構化資料,而不是非結構化的資料

  @為了友善全文文本字段中進行搜尋查詢,ES首先對文本進行分析,然後使用結果建立一個反向索引。

3.反向索引

  反向索引inverted index進行快速的全文檢索;

  1)首先對每個文檔進行切分為單獨的詞(詞terms,表征tokens);

  2)把所有的詞放入列别并排序;表示存在于的文檔。

  存在的問題:對于一些詞的單複數或同義詞沒法比對;

  解決方式:可以把詞設定為标準的格式:例如可以把大寫統一轉為小寫,複數轉化為單數,同義詞隻取一種等等。

                     需要注意的是對于搜尋的值也要進行統一标準化

  上面這個表征化和标準化的過程叫做分詞。

4.分析

(1)首先表征化一個文本為反向索引單獨的詞term

 (2)然後标準化這些詞為标準形式,提高可搜尋性或查全率

分析器analyzer

三個功能:1)字元過濾器:在表征化前過濾字元串,能去除html标記,&轉化為and等

                    2)分詞器:tokenizer表征化為獨立的詞,譬如ik

                    3)表征過濾token filters  通過上面兩步得到的每個詞要進行表征過濾,它可以修改詞(大小寫轉化),去除詞(停用詞)或增加詞(同義詞)

内建的分析器:标準分析器:以單詞邊界切分文本,去除大部分标點符号,把詞轉為小寫;

              簡單分詞器:非單個字母的文本切分,然後轉為小寫;

              空格分析器:根據空格切分文本,不轉化小寫;

              語言分析器:譬如english

分析器被使用:索引時文本被分析為反向索引,搜尋時要同樣的分析流程。

              1)當查詢全文,将使用相同的分析器來分析字元串;

2)當查詢一個确切值,查詢不分析,但可以自己指定

5.映射

  支援的類型:

類型 表示的資料類型
String string
Whole number byte, short, integer, long
Floating point float, double
Boolean boolean
Date date

對于string字元串:兩個參數index、analyer

  Index:定義字元串以何種方式被索引:

解釋
analyzed 首先分析這個字元串,然後索引。換言之,以全文形式索引此字段。
not_analyzed 索引這個字段,使之可以被搜尋,但是索引内容和指定值一樣。不分析此字段。
no 不索引這個字段。這個字段不能為搜尋到。

Ps:其他類型long、double、date也接受index參數,隻是不能為analyzed

更新映射

可以在映射中增加字段,但不能修改他。

6.複合類型

  多值字段:類似{ "tag": [ "search", "nosql" ]},當做值集合      
  空字段:null被認為空字段      
  多層對象:      
       内部對象:采用扁平的方式,例如:      
<pre name="code" class="plain">{
    "tweet":           [elasticsearch, flexible, very],
    "user.id":         [@johnsmith],
    "user.gender":      [male],
    "user.name.last":  [smith]
}

 對象陣列
{
    "followers": [
        { "age": 35, "name": "Mary White"},
        { "age": 26, "name": "Alex Jones"},
        { "age": 19, "name": "Lisa Smith"}
    ]
}
會轉化為:
{
    "followers.age":   [19, 26, 35],
    "followers.name":  [alex,jones, lisa, smith, mary, white]
}
           
原有的關聯關系會消失,後續可以嵌套對象解決,待續。      
本文出處:http://blog.csdn.net/shan1369678/article/details/51455005      

繼續閱讀