大資料下的日誌--ElasticSearch部分(四)--Mapping
為了說明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
linux下oracle11G 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、