1. 程式人生 > >大資料下的日誌--ElasticSearch部分(四)--Mapping

大資料下的日誌--ElasticSearch部分(四)--Mapping

相當於資料庫的表結構的定義,elasticsearch的mapping 也很重要。直接關係到效能及搜尋結果的準確性。elasticsearch的java api的例子太少,我在這兒就獻醜了。
為了說明mapping的定義,我這裡定義了一個簡單的模型,就ID,type,和catIds 3個屬性,重在說明如何使用java api來定義mapping,具體各field應該如何定義,這裡不做討論。
Java程式碼  收藏程式碼
public class TestModel implements Serializable {  
    private static final long serialVersionUID = 3174577828007649745L;  
    //主ID  
    private long id;  
    //型別,為types之一  
    private String type;  
    /** 
     * 這裡是一個列表 
     */  
    private List<Integer> catIds;  
      
      
    public long getId() {  
        return id;  
    }  
    public void setId(long id) {  
        this.id = id;  
    }  
    public String getType() {  
        return type;  
    }  
    public void setType(String type) {  
        this.type = type;  
    }  
    public List<Integer> getCatIds() {  
        return catIds;  
    }  
    public void setCatIds(List<Integer> catIds) {  
        this.catIds = catIds;  
    }  
}  
 我們假設id就儲存為long型別,type儲存為字串型別,catIds為一個列表,其實際型別為integer型別。定義的mapping如下:
Java程式碼  收藏程式碼
/** 
     * mapping 一旦定義,之後就不能修改。 
     * @return 
     * @throws Exception 
     */  
    private static XContentBuilder getMapping() throws Exception{  
        XContentBuilder mapping = jsonBuilder()    
                   .startObject()    
                     .startObject("test")    
                     .startObject("properties")           
                       .startObject("id")  
                            .field("type", "long")  
                            .field("store", "yes")  
                        .endObject()      
                          
                       .startObject("type")  
                            .field("type", "string")  
                            .field("index", "not_analyzed")  
                        .endObject()    
                          
                       .startObject("catIds")  
                            .field("type", "integer")  
                       .endObject()    
                     .endObject()    
                    .endObject()    
                  .endObject();    
        return mapping;  
    }  
 注意:elasticsearch的field一旦定義後就無法修改,你想增加一個store屬性,都不行。
 
下面就是呼叫JAVA API了,注意,在定義mapping之前,還需要先建立一個index庫。這裡,我index庫和mapping 寫到一個方法裡面了。
Java程式碼  收藏程式碼
Client client = ESUtils.getClient();  
        //首先建立索引庫  
        CreateIndexResponse  indexresponse = client.admin().indices()  
        //這個索引庫的名稱還必須不包含大寫字母  
        .prepareCreate("testindex").execute().actionGet();  
        System.out.println(indexresponse.acknowledged());;  
        //如果是在兩臺機器上,下面直接putMapping可能會報異常  
        PutMappingRequestBuilder builder = client.admin().indices().preparePutMapping("testindex");  
        //testType就像當於資料的table  
        builder.setType("testType");  
        XContentBuilder mapping = getMapping();  
        builder.setSource(mapping);  
        PutMappingResponse  response = builder.execute().actionGet();  
        System.out.println(response.isAcknowledged());  
 其中,這個程式碼在我本機出現一點問題,當我建立完index後,直接建立mapping 的時候,報index missing。我把兩個es Node停掉一個就沒有問題了。可見,ES將create index和putMapping放到了兩個不同的es Node下面,導致了上面那個異常。
 
好了,有時為了測試,可能需要刪除某個索引,程式碼如下:
Java程式碼  收藏程式碼
Client client = ESUtils.getClient();  
        client.admin().indices()  
        //這個索引庫的名稱還必須不包含大寫字母  

        .prepareDelete("testindex").execute().actionGet();  

系列部落格地址:

1,http://blog.csdn.net/xvshu/article/details/48845307
2,http://blog.csdn.net/xvshu/article/details/48916793
3,http://blog.csdn.net/xvshu/article/details/48917017
4, http://blog.csdn.net/xvshu/article/details/48917059

 

相關推薦

資料日誌--ElasticSearch部分--Mapping

相當於資料庫的表結構的定義,elasticsearch的mapping 也很重要。直接關係到效能及搜尋結果的準確性。elasticsearch的java api的例子太少,我在這兒就獻醜了。 為了說明mapping的定義,我這裡定義了一個簡單的模型,就ID,type,和ca

資料日誌--ElasticSearch部分--Bulk,Search操作

其實在上一篇部落格中,只要大家能看懂,就應該能夠根據其程式碼做到舉一反三了,依次類推ES的批量操作Bulk,搜尋功能Search等,但在這裡還是簡單講一下。   批量索引和刪除   Java程式碼  收藏程式碼 BulkRequestBuilder bulkRequest

資料Hadoop叢集環境搭建

安裝JDK 安裝Java JDK 1、 檢視是否已經安裝了java JDK。 [[email protected] Desktop]# java –version 注意:Hadoop機器上的JDK,最好是Oracle的Java JDK,不然會有一些問題,比如可能沒

資料的Distinct Count:Bitmap篇

在前一篇中介紹了使用API做Distinct Count,但是精確計算的API都較慢,那有沒有能更快的優化解決方案呢? 1. Bitmap介紹 《程式設計珠璣》上是這樣介紹bitmap的: Bitmap是一個十分有用的資料結構。所謂的Bitmap就是用一個bit位來標記某個元素對應的Value,而

python建立elasticsearch索引實現資料搜尋——之環境搭建

目錄 1.需求闡述 1)資料儲存在阿里雲內網的Mysql伺服器上,需要通過一臺伺服器SSH隧道穿透取得資料。 2)首先明確,一張設計圖需要多種素材來構成。資料量很大,需要操作的有兩個表,稱為stylepatternshow表,目前資料3w行(

資料探勘十演算法——支援向量機SVM:SMO演算法原理

首先感謝“劉建平pinard”的淵博知識以及文中詳細準確的推導!!! 支援向量機原理SVM系列文章共分為5部分: (一)線性支援向量機 (二)線性支援向量機的軟間隔最大化模型 (三)線性不可分支援向量機與核函式 (四)SMO演算法原理 (五)線性支援迴歸

資料系列之資料倉庫Hive知識整理Hive的嚴格模式,動態分割槽,排序,事務,調優

1.Hive的嚴格模式Hive提供了一個嚴格模式,可以防止使用者執行那些產生意想不到的不好的影響的查詢。想想看在那麼大的資料量的前提下,如果我們在分割槽上表上使用查詢所有,或是使用了笛卡爾積查詢資料等等不良情況,那得花費我們多少時間和資源成本,Hive在預設情況下會開啟一種模

centos7搭建ELK Cluster集群日誌分析平臺:簡單測試

-1 簡單測試 logs ima .tar.gz 分析 -c cluster images 續之前安裝好的ELK集群   各主機:es-1 ~ es-3 :192.168.1.21/22/23       logstash:  192.168.1.24       ki

elasticsearch系列部署

linux .tar.gz ast 官方 hup bin arc 分享 quest linux環境 centOS6.8 本文采用tar包的方式部署es 準備jdk8的環境 5.4.0的es依賴jdk8及以上版本 下載linux版的jdk jdk-8u121-linux-x6

linuxoracle11G DG搭建:興許驗證操作

歸檔 驗證 補充 over nts content -s 環境 fontsize linux下oracle11G DG搭建(四):興許驗證操作 環境 名稱 主庫 備庫 主機名 bjsrv shsrv 軟件版本號 RedH

搜索引擎ElasticSearch系列: ElasticSearch2.4.4 sql插件安裝

china code als 插件 技術分享 -s fun nlp 4.0 一:ElasticSearch sql插件簡介   With this plugin you can query elasticsearch using familiar SQL syntax.

此文獻給正打算入門資料的朋友:資料學習筆記1000條1

1、Zookeeper用於叢集主備切換。 2、YARN讓叢集具備更好的擴充套件性。 3、Spark沒有儲存能力。 4、Spark的Master負責叢集的資源管理,Slave用於執行計算任務。 5、Hadoop從2.x開始,把儲存和計算分離開來,形成兩個相對獨立的子叢集:HDF

此文獻給正打算入門資料的朋友:資料學習筆記1000條2

501、MapReduce計算框架中的輸入和輸出的基本資料結構是鍵-值對。 502、Hadoop神奇的一部分在於sort和shuffle過程。 503、Hive驅動計算的“語言”是一XML形式編碼的。 504、Hive通過和Jobtracker通訊來初始化MapReduce任務(Job)。 505、M

Linux使用ElasticSearch教程

一:ElasticSearch在Linux下安裝簡單總結.       1.本次安裝的版本是ES6.3.2.版本.下載到壓縮包.解壓後直接來到當前的解壓目錄.       cd config     &n

日誌學習系列——NLog實例

bsp 分享 安裝 不想 介紹 simple get sim 解決方案 具體不想介紹了,新建一個解決方案 ,直接用NuGet安裝就行了 具體項目代碼可以在https://github.com/qiuxianhu/SimpleNLog下載日誌學習系列(四)——NLo

Elasticsearch學習文件CRUD操作

叢集管理 (1)快速檢查叢集的健康狀況 GET /_cat/health?v (2)快速檢視叢集中有哪些索引 GET /_cat/indices?v (3)簡單的索引操作 建立索引: PUT /test_index?pretty 刪除索引: DELE

資料背後的神祕公式:貝葉斯公式

大資料、人工智慧、海難搜救、生物醫學、郵件過濾,這些看起來彼此不相關的領域之間有什麼聯絡?答案是,它們都會用到同一個數學公式——貝葉斯公式。它雖然看起來很簡單、很不起眼,但卻有著深刻的內涵。那麼貝葉斯公式是如何從默默無聞到現在廣泛應用、無所不能的呢? ◆ ◆ ◆ 什麼是貝

北京理工大學-資料結構期末考試試題

資料結構試卷(四) 一、選擇題(每題1分共 20分) 1.設一維陣列中有n個數組元素,則讀取第i個數組元素的平均時間複雜度為(  )。    (A)O(n)      &

Elasticsearch實踐:IK分詞

完成 詞語 char 1.2 prop tokenize 字母 發生 odi 環境:Elasticsearch 6.2.4 + Kibana 6.2.4 + ik 6.2.4 Elasticsearch默認也能對中文進行分詞。 我們先來看看自帶的中文分詞效果: curl

ambari資料平臺搭建的安裝

本篇主要說明離線安裝的流程,如需檢視線上安裝的可以看以前博文 https://blog.csdn.net/xiaozou_it/article/details/82911160 一、安裝前的一些準備(離、線上皆需先完成) 1、推薦四臺虛擬機器器(本文以centos為例) 2、