<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Elasticsearch學習筆記(四)Mapping映射 ## Mapping簡述 Elasticsearch是一個schema-less的系統,但并不代表no shema,而是會盡量根據JSON源數據的基礎類型猜測你想要的字段類型映射。 Elasticsearch中Mapping類似于靜態語言中的數據類型,但是同語言的數據類型相比,映射還有一些其他的含義。 Elasticsearch會根據JSON源數據的基礎類型猜測你想要的字段映射。將輸入的數據轉變成可搜索的索引項。Mapping就是我們自己定義的字段的數據類型,同時告訴Elasticsearch如何索引數據以及是否可以被搜索。 ## 映射的增刪改查 Elasticsearch可以根據數據中的新字段來創建新的映射,當然,在正式數據寫入之前我們可以自己定義Mapping, 等數據寫入時,會按照定義的Mapping進行映射。如果后續數據有其他字段時,Elasticsearch會自動進行處理。 ~~~ curl -XPUT 'http://localhost:9200/logstash-2016.01.01/_mapping' -d ' { "mappings" : { "syslog" : { "properties" : { "@timestamp" : { "type" : "date" }, "message" : { "type" : "string" }, "pid" : { "type" : "long" } } } } } ' ~~~ 在這里需要注意一下,我們已經存在的索引是不可以更改它的映射的,對于存在的索引,只有新字段出現時,Elasticsearch才會自動進行處理。如果確實需要修改映射,那么就使用reindex,采用重新導入數據的方式完成。 ### ReIndex Elasticsearch并不提供針對索引的rename,mapping、alter等操作。如果需要更改某個字段的mapping映射,只有一些其他工具。 用Logstash重建索引: 在最新版的logstash中,對logstash-input-elasticsearch插件做了一定的修改,使得通過Logstash完成重建索引稱為可能。 ### Delete 雖然寫入數據時Elasticsearch會自動的添加映射進行處理,但是刪除數據并不會刪除數據的映射 `?#curl -XDELETE 'http://localhost:9200/logstash-2016.01.01/syslog' `?刪除了syslog下面的全部數據,但是syslog的映射還在 刪除映射的命令: `?#curl -XDELETE 'http://localhost:9200/logstash-2016.01.01/_mapping'` 刪除索引的話映射也會刪除 `?#curl -XDELETE 'http://localhost:9200/logstash-2016.01.01'` ### 查看: 學習索引的話最直接的方式就是查看logstash寫入數據到Elasticsearch的時候會根據自帶的template生成一個很有學習意義的映射 ## Elasticsearch數據類型 Elasticsearch自帶的數據類型數Lucene索引的依據,也是我們做手動映射調整到依據。 映射中主要就是針對字段設置類型以及類型相關參數。 JSON基礎類型如下: 字符串:string 數字:byte、short、integer、long、float、double、 時間:date 布爾值: true、false 數組: array 對象: object Elasticsearch獨有的類型: 多重: multi 經緯度: geo_point 網絡地址: ip 堆疊對象: nested object 二進制: binary 附件: attachment 注意點: Elasticsearch映射雖然有idnex和type兩層關系,但是實際索引時是以index為基礎的。如果同一個index下不同type的字段出現mapping不一致的情況,雖然數據依然可以成功寫入并生成并生成各自的mapping,但實際上fielddata中的索引結果卻依然是以index內第一個mapping類型來生成的。 ## 自定義字段映射 Elasticsearch的Mapping提供了對Elasticsearch中索引字段名及其數據類型的定義,還可以對某些字段添加特殊屬性:該字段是否分詞,是否存儲,使用什么樣的分詞器等。 ### 精確索引: 字段都有幾個基本的映射選項,類型(type)和索引方式(index)。以字符串類型為例,index有三個選項: analyzed:默認選項,以標準的全文索引方式,分析字符串,完成索引。 not_analyzed:精確索引,不對字符串做分析,直接索引字段數據的精確內容。 no:不索引該字段。 對于日志文件來說,很多字段都是不需要再Elasticsearch里做分析這步的,所以,我們可以這樣設置: ~~~ "myfieldname" : { "type" : "string", "index" : "not_analyzed" } ~~~ ### 時間格式: @timestamp這個時間格式在Nginx中叫$time_iso8601,在Rsyslog中叫date-rfc3339,在Elasticsearch中叫dateOptionalTime.但事實上,Elasticsearch完全可以接受其他時間格式作為時間字段的內容。對于Elasticsearch來說,時間字段內容實際上就是轉換成long類型作為內部存儲的。所以,接受段的時間格式可以任意設置: ~~~ @timestamp: { "type" : "date", "index" : "not_analyzed", "doc_values" : true, "format" : "dd/MM/YYYY:HH:mm:ss Z" } ~~~ ### 多種索引: 多重索引是Logstash用戶習慣的的一個映射,因為這是Logstash默認開啟的配置: ~~~ "title" : { "type" : "string", "fields" : { "raw" : { "type" : "string", "index" : "not_analyzed" } } } ~~~ 其作用時,在title字段數據寫入的時候,Elasticsearch會自動生成兩個字段,分別是title和title.raw。這樣,有可能同時需要分詞和部分次結果的環境,就可以很靈活的使用不同的索引字段了。比如,查看標題中最常用的單詞,應該是使用title字段,查看閱讀數最多的文章標題,應該是使用title.raw字段。 ### 多值字段: ### 空字段: 數組可以使空的。這等于有零個值。事實上,Lucene沒法存放null值,所以一個null值的字段唄認為是孔子段。 下面這四個字段將被識別為空字段而不被索引: ~~~ "empty_string" : "", "null_value" : null, "empty_array" : [], "array_with_null_value" : [ null ] ~~~ ### 多層對象:? 我們需要討論的最后一個自然JSON數據類型是對象(object)。 內部對象(inner objects)經常用于嵌入一個實體或對象里的另一個地方。例如,
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看