1. 程式人生 > >elasticsearch 索引 Warmer 管理

elasticsearch 索引 Warmer 管理

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-warmers.html#removing
為什麼要使用Warmer呢,這要看自己的資料和查詢等條件,但是基本上都是有用的。在es啟動時並不會載入任何資料,在查詢前。因此,在查詢前把需要的資料預載入到快取中和啟動I/O快取(通過讀硬碟上的segment資料),通過這種方式,所有的需要的資訊都已經放置在快取中,就能保證我們的查詢獲得了優化和所有需要的資料都已經準備好了。最後,通過一個例項簡單說明使用warmer在初始查詢時與普通方式查詢的差距(參考 Mastering Elasticsearch for java 書籍的197頁)。
使用warmer允許我們對索引註冊一些我們常用的查詢或者統計請求在查詢時間進行預熱(快取),隨著查詢實時性的高要求,冷資料(segments)可以查詢之前預熱起來。特別是一些針對某些欄位的負載比較大的統計或者排序,通過warmer API可以建立、刪除和獲取warmer資訊。
可以通過index.warmer.enabled設定為false來禁用該功能。禁用curl命令:

curl -XPUT 'localhost:9200/mastering/_settings' -d '{
  "index.warmer.enabled": false
}'

mastering為索引名
一、建立Warmer

/**
 * <pre>
 * 以上程式碼在建立時需要制定查詢條件,
 * query還是filter,addFacet,addAggregation,
 * 等查詢。制定warmer後,需要重啟ES才能看到效果,
 * 查詢條件需要與設定的warmer定義的一致才行。
 * @param indexName 索引名
 * @param indexType 索引型別
 * @return
 * </pre>
 */
public void createWarmer(String indexName, String indexType){ //建立Warmer//Puts an index search warmer to be applies when applicable. PutWarmerResponse response = getClient().admin().indices() //warmer定義名 .preparePutWarmer("warmerName") .setSearchRequest( //可以指定針對的索引和型別,型別不指定,則針對所有的型別 getClient().prepareSearch
(indexName).setTypes(indexType) //按照tgsj欄位分組統計 //.addAggregation(AggregationBuilders.terms("tgsj").field("tgsj")) //.addSort("cteareTime", SortOrder.DESC) .setPostFilter(FilterBuilders.termFilter("conCity", "000060")) //.addFacet(FacetBuilders.termsFacet("tags").field("tags")) ).execute().actionGet(); System.out.println("操作是否成功:"+response.isAcknowledged()); }

測試用例:

@Test//
    public void createWarmer() throws Exception {
        esutils.createWarmer("esfindex","esftype");
    }

新增命令:

curl -XPUT localhost:9200/test/type1/_warmer/warmer_1 -d '{
"query" : {
    "match_all" : {}
},
"aggs" : {
    "aggs_1" : {
        "terms" : {
            "field" : "field"
            }
        }
    }
}'

test為索引名,type1為索引型別,warmer_1為warmer名;
二、查詢Warmer

Java API方式:
/**
 * 獲取Warmer資訊
 * @param indexName
 * @param indexType
 */
public void getWarmer(String indexName, String indexType){
    GetWarmersResponse response = getClient().admin().indices()        
     .prepareGetWarmers(indexName).addTypes(indexType).get();

    ImmutableOpenMap<String, ImmutableList<IndexWarmersMetaData.Entry>>  map = response.getWarmers();
    Iterator<ObjectObjectCursor<String, ImmutableList<IndexWarmersMetaData.Entry>>>  itor = map.iterator();
    while(itor.hasNext()){
        ObjectObjectCursor<String, ImmutableList<IndexWarmersMetaData.Entry>>  enCursor = itor.next();
        System.out.println(enCursor.key);//索引名
        ImmutableList<IndexWarmersMetaData.Entry> id = enCursor.value;
        Iterator<IndexWarmersMetaData.Entry> ir =  id.iterator();
        while(ir.hasNext()){
            IndexWarmersMetaData.Entry ieEntry = ir.next();
            System.out.println(ieEntry.name());//warmer名
            System.out.println(FastJSONHelper.serialize(ieEntry));
        }
    }
}

命令:curl -XGET localhost:9200/esfindex/_warmer/warmerName?pretty
esfindex為索引名,支援萬用字元,如
curl -XGET localhost:9200/test/_warmer/warm*;
命令獲取結果:

三、刪除Warmer

Java api

/**
 * 刪除指定索引的warmer
 * @param indexName 索引名
 * @param warmerName warmer名
 */
public void deleteWarmer(String indexName, String warmerName){
    //刪除Warmer
    DeleteWarmerResponse response = getClient().admin().indices()
      .prepareDeleteWarmer()
        //索引名
      .setIndices(indexName)
        //warmer名
        .setNames(warmerName)
      .execute().actionGet();

    System.out.println("操作是否成功:"+response.isAcknowledged());
}

測試用例:

 @Test//
    public void deleteWarmer() throws Exception {
        esutils.deleteWarmer("esfindex","warmerName");
}

相關推薦

elasticsearch 索引 Warmer 管理

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-warmers.html#removing 為什麼要使用Warmer呢,這要看自己的資料和查詢等條件,但是基本上都是

Elasticsearch 索引管理和內核探秘

區分 執行 每隔一秒 流程 禁用 tex buffer scroll 似的 1. 創建索引,修改索引,刪除索引 //創建索引 PUT /my_index { "settings": { "number_of_shards": 1, "number_of

Elasticsearch索引管理(一)——建立索引

1 建立索引 建立索引API用於在Elasticsearch中手動建立索引。Elasticsearch中的所有文件都儲存於索引中。 PUT sss note:使用預設設定建立索引sss。 索引命名限制 索引名必須為小寫 不能包括\ / * ? " &

乾貨 | Elasticsearch索引生命週期管理探索

引言 Elasticsearch上海Meetup中ebay工程師提了索引生命週期管理的概念。的確,在Demo級別的驗證階段我們資料量比較小,不太需要關注索引的生命週期,一個或幾個索引基本就能滿足需要。所以,這也會產生一種假象,認為:“Elasticsearch

elasticsearch索引管理

–檢視叢集健康狀況 GET /_cluster/health 修改叢集名稱和節點名稱,可以在配置檔案elasticsearch.yml中修改: cluster.name: testcluster node.name: node-1 預設配置 –檢視所有索引的分片設定情況

Elasticsearch索引管理-reindex重建索引

一個field的設定是不能被修改的,如果要修改一個field,那麼應該重新按照新的mapping,建立一個index,然後將資料批量查詢出來,重新用bulk api寫入新index中。 批量查詢的時候,建議採用scroll api,並且採用多執行緒併發的方式來reindex資料,每次scroll就查詢指定日

Elasticsearch 索引管理

客戶端 ES 提供多種不同的客戶端: 1.TransportClient ES提供的傳統客戶端,官方計劃8.0版本刪除此客戶端。   2.RestClient RestClient是官方推薦使用的,它包括兩種:Java Low Level REST Client和

[Elasticsearch] 索引管理 (一)

索引管理 我們已經瞭解了ES是如何在不需要任何複雜的計劃和安裝就能讓我們很容易地開始開發一個新的應用的。但是,用不了多久你就會想要仔細調整索引和搜尋過程來更好的適配你的用例。 幾乎所有的定製都和索引(Index)以及其中的型別(Type)相關。本章我們就來討論用於管

[Elasticsearch] 索引管理 (五)

預設對映(Default Mapping) 一般情況下,索引中的所有型別都會有相似的欄位和設定。因此將這些常用設定在_default對映中指定會更加方便,這樣就不需要在每次建立新型別的時候都重複設定。_default對映的角色是新型別的模板。所有在_default對映之

搜尋引擎(Elasticsearch索引管理2)

開發十年,就只剩下這套架構體系了! >>>   

ElasticSearch生命週期管理-索引策略配置與操作

## 概述 本文是在本人學習研究ElasticSearch的生命週期管理策略時,發現官方未提供中文文件,有的也是零零散散,此文主要是翻譯官方文件[Policy phases and actions](https://www.elastic.co/guide/en/elasticsearch/referenc

Elasticsearch索引生命週期管理方案

![file](https://img2020.cnblogs.com/other/1769816/202012/1769816-20201230084209655-1454406711.png) ## 一、前言 在 `Elasticsearch` 的日常中,有很多如儲存 **系統日誌**、**行為資料**等

elasticsearch索引的增刪改查入門

zid jin 5% dai ecc aix aik class chang Java%E4%B8%AD%E7%9A%84Set%E9%9B%86%E5%90%88%E6%8E%A5%E5%8F%A3%E5%AE%9E%E7%8E%B0%E6%8F%92%E5%85%A5%

記一次logback傳輸日誌到logstash根據自定義設置動態創建ElasticSearch索引

由於 net 區分 ack 分享 files 名稱 進行 art 先說背景,由於本人工作需要創建很多小應用程序,而且在微服務的大環境下,服務越來越多,然後就導致日誌四分五裂,到處都有,然後就有的elk,那麽問題來了 不能每個小應用都配置一個 logstash 服務來傳輸日誌

2、MongoDB學習之索引管理

字段 是否 reat 手動 基本 默認 uniq 匹配 會有 目標:實現索引的創建、查詢、刪除、explan管理等操作 環境: > db.version() 3.4.7 索引創建滿足的基本需求: 1;索引提高查詢速度 2;在mongodb中,索引可以按自動列升序/

ELK 實驗(七)Elasticsearch 集群管理

大數據 其他 Head 插件head插件是一個elasticsearch的集群管理工具,它是完全由html5編寫的獨立網頁程序。Github:https://github.com/mobz/elasticsearch-headgit clone https://github.com/mobz/elas

ElasticSearch(三):Java操作ElasticSearch索引之CRUD

transport delete end std testin python網絡 search ava socket 1 package com.gxy.ESChap01; 2 3 import java.net.InetAddress; 4 impor

Elasticsearch索引定時清理

$? 頁面 -i 發現 curl .sh 通過 連接超時 jaf 問題 近期,kibana頁面上出現Elasticsearch plugin is red錯誤信息,重啟elasticsearch後又頻繁出現該問題,觀察elasticsearch發現各節點之間出現連接超時的現

ElasticSearch 索引 剖析

ElasticSearch index 剖析 在看ElasticSearch權威指南基礎入門中關於:分片內部原理這一小節內容後,大致對ElasticSearch的索引、搜尋底層實現有了一個初步的認識。記錄一下在看文件的過程中碰到的問題以及我的理解。此外,在文章的末尾,還討論分散式系統中的主從複製原理,以及採

記一次logback傳輸日誌到logstash根據自定義設定動態建立ElasticSearch索引

轉:https://www.cnblogs.com/zhyg/p/6994314.html 先說背景,由於本人工作需要建立很多小應用程式,而且在微服務的大環境下,服務越來越多,然後就導致日誌四分五裂,到處都有,然後就有的elk,那麼問題來了 不能每個小應用都配置一個 logstash