走進大數據丨ElasticSearch6.X的JavaAPI使用一

2021-02-15 ItStar


通過Java操作Elastic Search6,環境請看:走進大數據丨 ElasticSearch6.X的JavaAPI環境部署

import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.action.get.MultiGetItemResponse;import org.elasticsearch.action.get.MultiGetResponse;import org.elasticsearch.action.index.IndexRequest;import org.elasticsearch.action.index.IndexResponse;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.action.update.UpdateRequest;import org.elasticsearch.action.update.UpdateResponse;import org.elasticsearch.client.Requests;import org.elasticsearch.client.transport.TransportClient;import org.elasticsearch.common.settings.Settings;import org.elasticsearch.common.transport.TransportAddress;import org.elasticsearch.common.xcontent.XContentBuilder;import org.elasticsearch.common.xcontent.XContentFactory;import org.elasticsearch.common.xcontent.XContentType;import org.elasticsearch.index.query.QueryBuilders;import org.elasticsearch.search.SearchHit;import org.elasticsearch.search.SearchHits;import org.elasticsearch.transport.client.PreBuiltTransportClient;
import java.net.InetAddress;import java.util.HashMap;import java.util.Map;

初始化獲取Elastic Search連結

    public final static String HOST = "192.168.1.111";        public final static int PORT = 9300;
@SuppressWarnings({"resource", "unchecked"}) public static TransportClient getConnection() throws Exception { Settings settings = Settings.builder().put("cluster.name", "plus").build(); TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddresses(new TransportAddress(InetAddress.getByName(HOST), PORT));
return client; }

創建索引

    public static void createIndex() throws Exception {        TransportClient client = getConnection();        client.admin().indices().prepareCreate("blog12").get();        client.close();    }

刪除索引

    public static void deleteIndex() throws Exception {        TransportClient client = getConnection();        client.admin().indices().prepareDelete("blog1").get();        client.close();    }

使用Json文件,創建document

注意:在ES6.x版本之前可以直接使用jaon傳,之後更新需要添加參數XContentType.JSON

    public static void createDocument() throws Exception {                String json = "{" + "\"id\":\"1\"," + "\"title\":\"基於Lucene的搜索伺服器\","                + "\"content\":\"它提供了一個分布式多用戶能力的全文搜尋引擎,基於RESTful web接口\"" + "}";                IndexResponse indexResponse = getConnection().prepareIndex("blog", "article", "2").setSource(json, XContentType.JSON).execute().actionGet();                System.out.println("index"+indexResponse.getIndex());        System.out.println("Type"+indexResponse.getType());        System.out.println("ID"+indexResponse.getId());        System.out.println("version"+indexResponse.getVersion());        System.out.println("Result"+indexResponse.getResult());        getConnection().close();    }

使用map集合創建document

public static void createDocumentmap() throws Exception {                Map<String,String> json = new HashMap<String, String>();        json.put("id","1");        json.put("title","基於Lucene的搜索伺服器");        json.put("content","它提供了一個分布式多用戶能力的全文搜尋引擎,基於RESTful web接口");

IndexResponse indexResponse = getConnection().prepareIndex("blog", "article", "1").setSource(json).execute().actionGet(); System.out.println("index: "+indexResponse.getIndex()); System.out.println("Type: "+indexResponse.getType()); System.out.println("ID: "+indexResponse.getId()); System.out.println("version: "+indexResponse.getVersion()); System.out.println("Result: "+indexResponse.getResult()); getConnection().close(); }

使用es提供的建議使用的方式

public static void createDocumentXcontent() throws Exception {                XContentBuilder field = XContentFactory.jsonBuilder()                .startObject()                .field("id", "4")                .field("title", "基於Lucene的搜索伺服器")                .field("content", "它提供了一個分布式多用戶能力的全文搜尋引擎,基於RESTful web接口")                .endObject();

IndexResponse indexResponse = getConnection().prepareIndex("blog", "article").setSource(field).execute().actionGet(); System.out.println("index: "+indexResponse.getIndex()); System.out.println("Type: "+indexResponse.getType()); System.out.println("ID: "+indexResponse.getId()); System.out.println("version: "+indexResponse.getVersion()); System.out.println("Result: "+indexResponse.getResult()); getConnection().close(); }


相關焦點

  • 大數據搜索與可視化分析(1)elasticsearch的安裝
    Beats:elastic公司開源的一款採集系統監控數據的代理agent,是在被監控伺服器上以客戶端形式運行的數據收集器的統稱,可以直接把數據發送給Elasticsearch或者通過Logstash發送給Elasticsearch,然後進行後續的數據分析活動。
  • Elasticsearch 的快照插件
    Elasticsearch 的快照倉庫分為本地倉庫(local repository)和遠程倉庫(remote repository)兩種。本地倉庫主要作為測試使用(單元測試或者試用 Elasticsearch 時使用),在生產線上使用意義不大。生產線上主要使用遠程倉庫,因為它可以將集群數據放在集群以外的地方,以作為數據備份。官方遠程倉庫插件主要有:AWS、GCS、Azure、HDFS 四個插件。
  • Elasticsearch安裝及使用
    在5.x版本中不支持直接安裝head插件,需要單獨啟動一個服務,安裝及啟動步驟如下:執行下載插件命令:git clone git://github.com/mobz/elasticsearch-head.git下載完畢後進入elasticsearch-head目錄,目錄結構如下:執行安裝命令:cd elasticsearch-head
  • ElasticSearch7.6.x總結-(前篇)
    誰在使用:維基百科,Stack Overflow,GitHub等等ELK技術=ES+logStash(採集日誌)+Kibana 用於-日誌數據分析ES、Solr、Lucene的關聯與區別:注意:JDK1.8是最低要求!
  • Spring Data ElasticSearch 使用
    Spring Data為Elasticsearch項目提供集成搜尋引擎。Spring Data Elasticsearch POJO的關鍵功能區域為中心的模型與Elastichsearch交互文檔和輕鬆地編寫一個存儲庫數據訪問層。
  • Elasticsearch如何優雅的激活X-Pack這個終極守護神
    「菜譜哥」可能注意到完全收費對於x-pack的發展起到了很大的制約,而且收入可能也沒有預期那麼理想,所以從elasticsearch 6.3版本以後,x-pack開始逐步開放免費功能。一石激起千層浪,憑藉elasticsearch多年打下來的江山,x-pack的應用如雨後春筍般的席捲了elasticsearch圈,尤其是需要將elasticsearch的訪問暴露在公網或者公有雲的業務場景下。此時的X-Pack就好比「中華神盾」一樣守護著Elasticsearch,為Elasticsearch的安全穩定的運行保駕護航。
  • ElasticSearch聚合查詢Restful語法和JavaApi詳解(基於ES7.6)
    (一)概述在前面關於ES的一系列文章中,已經介紹了ES的概念、常用操作、JavaAPI以及實際的一個小demo,但是在真實的應用場景中,還有可能會有更高階的一些用法,今天主要介紹兩種相對來說會更難一些的操作,聚合查詢。該文檔基於ElasticSearch7.6,將介紹restful查詢語法以及JavaApi。
  • Spring Data Elasticsearch的使用
    最近在項目開發過程中發現項目接口調用日誌表存在一定的問題,為了記錄項目中所有的接口調用數據專門用了一個表來存儲請求接口的報文信息,一直以來也沒出現什麼問題,上次我在和外部系統對接時發現,該接口返回的數據比較大,少的時候也有幾百Kb,這就導致了日誌存儲這一點存在問題,這麼大的數據使用mysql感覺已經不能滿足開發的需要了,所以我就想能不能換一種方式來存儲,比如ES或者MongoDB。
  • Elasticsearch訪問日誌配置
    一、ElasticsearchElasticsearch是一個基於Lucene[1]的搜索伺服器。
  • ElasticSearch性感體驗
    Elasticsearch是個開源分布式搜尋引擎,提供搜集、分析、存儲數據三大功能。它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful 風格接口,多數據源,自動搜索負載等。Kibana也是一個開源和免費的工具,Kibana可以為Logstash和ElasticSearch提供的日誌分析友好的Web界面,可以幫助匯總、分析和搜索重要數據日誌。
  • 使用 Elasticsearch 和 cAdvisor 監控 Docker 容器
    本文的目標是介紹 Elasticsearch[1] + Kibana[2] + cAdvisor[3] 的用法,使用它們來收集 Docker 容器的參數,分析數據並產生可視化報表。閱讀本文後你可以發現有一個監控儀錶盤能夠部分解決上述列出的問題。但如果只是使用 cAdvisor,有些參數就無法顯示出來,比如 Swarm 模式的節點。
  • Elastic App Search初體驗
    elasticsearch我們選擇的是使用rpm包的安裝方式,elasticsearch-7.9.0-x86_64.rpm,elastic7.9版本已經自帶打包了jdk,無需再獨立安裝jdk。在elasticsearch6.8版本之後,x_pack模塊帳戶基本功能已經免費;本文部署也將開啟安全模塊:xpack.security.enabled: trueyum localinstall elasticsearch-7.9.0-x86_64.rpm -y;安裝ES後執行如下命令籤發證書://首先生成
  • 使用 ODBC 連接微軟 Excel 和 Elasticsearch
    微軟的 Excel 表格在桌面辦公中有很廣泛的應用,而 Elasticsearch 的大數據存儲也滿足很多的快速查詢的需求。那麼有沒有一種辦法把 Elasticsearch 裡存儲的數據導出到 Excel 表格裡來呢?Elasticsearch SQL ODBC Driver 為這種方案提供可能。
  • ElasticSearch安裝
    一、ElasticSearch介紹Elasticsearch是一個基於Lucene[1]的搜索伺服器。
  • Elasticsearch SQL用法詳解
    Elasticsearch 5.x版本中,SQL功能還沒有集成到Elasticsearch源碼中,需要下載第三方插件後才能使用,配置過程如下: 1.安裝ES-SQL依賴node npm ES-SQL 5.x版本以後,安裝需要依賴node和npm,先安裝node和npm,安裝後在檢查node及npm的安裝,命令如下: yum -y install
  • Elasticsearch 7 系列(4) —— 數據類型
    Elasticsearch7中的數據類型,我們只有知道Elasticsearch7中都有什麼數據類型,哪種數據類型適合哪些數據,我們才能準確定義文檔。中有text和keyword兩種字符串類型,在老版本中是有string類型的,不過從Elasticsearch6開始就已經不再支持了。
  • ElasticSearch 5 —— Kibana + X-Pack 介紹使用(全)
    可視化指的是你可以在 Elasticsearch 索引中創建數據的可視化。 然後,你可以構建顯示相關可視化的儀錶板。Kibana 可視化是基於 Elasticsearch 查詢。 通過使用一系列Elasticsearch 聚合來提取和處理數據,你可以通過創建圖表來顯示您需要了解的信息的趨勢,峰值和驟降。你也可以通過從 Discover 保存的搜索中創建可視化或者從新搜索開始查詢。
  • 全網必會的搜索技術-ElasticSearch(一)
    比如,一個具有10億文檔的索引佔據1TB的磁碟空間,而任一節點都沒有這樣大的磁碟空間;或者單個節點處理搜索請求,響應太慢為了解決這個問題,Elasticsearch提供了將索引劃分成多份的能力,這些安裝Elasticsearch 4.1 安裝Elasticsearch4.1.1 創建普通用戶ES不能使用root用戶來啟動,必須使用普通用戶來安裝啟動。這裡我們創建一個普通用戶以及定義一些常規目錄用於存放我們的數據文件以及安裝包等。
  • Elasticsearch 使用中文分詞
    比如,當我們想將某個博客標記為「大神」時,博客系統卻將這個單詞粗暴的分成了如圖21-2所示的兩個詞「大」和「神」。顯然,這並不符合用戶的使用習慣。這是 Elasticsearch 語言分析器上的限制,它並不能友好的處理所有語言,特別是中文。這種情況下,我們就需要額外的中文分詞器來協助我們了。
  • ElasticSearch介紹
    /cn/products/elasticsearchGithub:https://github.com/elastic/elasticsearch總結:1、elasticsearch是一個基於Lucene的高擴展的分布式搜索伺服器,支持開箱即用。