最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ElasticSearch學(xué)習(xí)之Es索引Api操作

 更新時(shí)間:2023年01月31日 15:29:44   作者:程序員皮卡秋  
這篇文章主要為大家介紹了ElasticSearch學(xué)習(xí)之Es索引Api操作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Es索引Api操作

在操作之前,先給大家簡(jiǎn)單的說(shuō)下索引,在es中,默認(rèn)所有數(shù)據(jù)都會(huì)建立索引,我們可以類(lèi)比它是數(shù)據(jù)庫(kù)中的庫(kù),這里需要提示的是所有的索引index都必須要小寫(xiě)。

創(chuàng)建索引

語(yǔ)法:

PUT /${idnexName} 

運(yùn)行:

PUT /test

輸出:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "test"
}

這樣我們就創(chuàng)建了test索引,建完之后,我們可以到manager也就是控制臺(tái)左下角的設(shè)置圖標(biāo),點(diǎn)擊之后進(jìn)入索引管理,這樣我們就看到了剛剛建的索引,也可以查看的它的一些信息

索引別名

有時(shí)候,我們的索引非常多,管理起來(lái)就會(huì)變的麻煩,es為我們提供了aliases,也就是別名,我們可以簡(jiǎn)單的理解為對(duì)```index````做的標(biāo)記,它可以是一對(duì)一,也可以是一對(duì)多,下面就給大家演示一下,如何添加

語(yǔ)法:

POST _aliases

這里給大家舉個(gè)例子,比如年級(jí),一到六年級(jí)的索引可能是class_1,class_2,class_3,class_4,class_5,class_6,我們?cè)谄饎e名的時(shí)候,也不是亂起的,在規(guī)范中,建議使用有意義的字段使其歸為子集,比如可以統(tǒng)一叫做class

添加索引別名

一對(duì)一:

POST _aliases
{
 "actions":[
     {
         "add":{
             "index":"class_1",
             "alias":"class"
         }
     }
 ]
}

一對(duì)多,這里指的是一個(gè)別名對(duì)應(yīng)多個(gè)索引:

POST _aliases
{
 "actions":[
     {
         "add":{
             "indices":[
                 "class_1",
                 "class_2"
             ],
             "alias":"class"
         }
     }
 ]
}

多對(duì)一,這里指的多個(gè)別名對(duì)應(yīng)一個(gè)索引:

POST _aliases
{
 "actions":[
     {
         "add":{
             "index":"class",
             "aliases":[
                 "class_1",
                 "class_2"
             ]
         }
     }
 ]
}

輸出:

{
  "acknowledged" : true
}

查詢(xún)索引別名

語(yǔ)法:

GET ${indexName}/_alias

查詢(xún)class_1:

GET /class_1/_alias

輸出:

{
  "class_1" : {
    "aliases" : {
      "class" : { }
    }
  }
}

刪除索引別名

其實(shí)很簡(jiǎn)單,只需要把add改為 remove就好了,舉個(gè)例子,刪除class_1的索引別名:

  • 一對(duì)一
POST _aliases
{
 "actions":[
     {
         "remove":{
             "index":"class_1",
             "alias":"class"
         }
     }
 ]
}

我們?cè)诓樵?xún)一下:

{
  "class_1" : {
    "aliases" : { }
  }
}

可以看到已經(jīng)被我們刪掉了

一對(duì)多

POST _aliases
{
 "actions":[
     {
         "remove":{
             "indices":[
                 "class_1",
                 "class_2"
             ],
             "alias":"class"
         }
     }
 ]
}

多對(duì)一

POST _aliases
{
 "actions":[
     {
         "remove":{
             "index":"class",
             "aliases":[
                 "class_1",
                 "class_2"
             ]
         }
     }
 ]
}

這里就不帶大家一一輸出了,自己試著運(yùn)行一下。接著我們繼續(xù)看剩下的兩個(gè)屬性~

mapping

這個(gè)mapping是什么意思呢?字面理解好像是映射,那么它映射什么?我們以mysql為例,在創(chuàng)建表的時(shí)候,會(huì)對(duì)字段進(jìn)行聲明,比如字段名稱(chēng),字段大小以及類(lèi)型等等,在es中,同樣會(huì)對(duì)文檔的字段進(jìn)行聲明,包括字段類(lèi)型,所否分詞,是否索引,分詞規(guī)則等多種屬性,mapping就是提供這個(gè)作用的,所以這個(gè)大家要先理解。

es中提供了動(dòng)態(tài)mapping以及靜態(tài)mapping兩種方式來(lái)聲明一個(gè)類(lèi)型中文檔的字段,mapping的屬性有很多,這個(gè)后邊給大家整理好,本節(jié)先帶大家體驗(yàn)一下如何操作

settings

setting屬性用于設(shè)置當(dāng)前索引的分片數(shù),副本數(shù)等信息,常用的主要有:

index.number_of_shards:索引分片數(shù)

index.number_of_replicas:索引副本數(shù)

index.refresh_interval: refresh頻率,默認(rèn)1s。當(dāng)數(shù)據(jù)對(duì)實(shí)時(shí)刷新要求不那么高時(shí),可以適當(dāng)調(diào)大改值。當(dāng)值=-1時(shí),代表不會(huì)進(jìn)行refresh操作,但是請(qǐng)保證es的虛擬機(jī)內(nèi)存足夠大,不然會(huì)造成內(nèi)存溢出

常見(jiàn)設(shè)置:

PUT class_1
{
    "settings":{
        "index":{
            "number_of_shards":3,
            "number_of_replicas":1,
            "refresh_interval":"3s"
        }
    }
}

下面我們看下完整的索引創(chuàng)建:

PUT class_1
{
    "aliases":{
        "class":{
        }
    },
    "mappings":{
        "properties":{
            "num":{
                "type":"long"
            },
            "name":{
                "type":"text",
                "fields":{
                    "keyword":{
                        "type":"keyword",
                        "ignore_above":256
                    }
                }
            }
        }
    },
    "settings":{
        "index":{
            "refresh_interval":"3s",
            "number_of_shards":"3",
            "number_of_replicas":"1"
        }
    }
}

有幾個(gè)mapping的屬性給大家說(shuō)下:

  • fields這個(gè)屬性的意思是·多字段屬性,讓一個(gè)字段擁有多個(gè)子字段類(lèi)型,使得一個(gè)字段能夠被多個(gè)不同的索引方式進(jìn)行索引,
  • keyword 不會(huì)做分詞處理。類(lèi)型為 keyword 的字段只能通過(guò)精確值搜索到。類(lèi)型適用于索引結(jié)構(gòu)化的字段,在Elasticsearch 5.X 之后的字段類(lèi)型不再支持 string,由 text 或 keyword 取代。如果仍使用 string,會(huì)給出警告。
  • ignore_above: keyword,text類(lèi)型字段都可以設(shè)置ignore_above屬性(默認(rèn)是10) ,表示最大的字段值長(zhǎng)度,*超出這個(gè)長(zhǎng)度的字段將不會(huì)被索引,但是會(huì)存儲(chǔ),ignore_above一般設(shè)置為256,設(shè)置為30000可能會(huì)出現(xiàn)BulkFailureException

查詢(xún)索引

上邊我們講的是創(chuàng)建,下面我們看下怎么查詢(xún)

查詢(xún)當(dāng)前集群全部索引

語(yǔ)法:

GET _cat/indices?v

輸出:

health status index                    uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana_task_manager_1   RN3mjh1qRbi7wnHnZAvD1g   1   1          2            0     77.8kb         41.8kb
green  open   .apm-agent-configuration FFRPssv0SLGYNSh5_OGPeA   1   1          0            0       566b           283b
green  open   kibana_sample_data_logs  E2e-LpmvSwm62txGvhl3Ow   1   1      14074            0     21.7mb         10.7mb
green  open   class_1                  UGsT0F5nQa-p68I7NbBWqg   3   1          0            0      1.1kb           690b
green  open   .kibana_1                2bvqPg7nSiSqKahUdJuevw   1   1         51            4    284.4kb        143.1kb

查詢(xún)單個(gè)索引

GET class_1

會(huì)輸出一段json描述信息:

{
  "class_1" : {
    "aliases" : {
      "class" : { }
    },
    "mappings" : {
      "properties" : {
        "name" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "num" : {
          "type" : "long"
        }
      }
    },
    "settings" : {
      "index" : {
        "refresh_interval" : "3s",
        "number_of_shards" : "3",
        "provided_name" : "class_1",
        "creation_date" : "1670811044703",
        "number_of_replicas" : "1",
        "uuid" : "UGsT0F5nQa-p68I7NbBWqg",
        "version" : {
          "created" : "7060299"
        }
      }
    }
  }
}

有時(shí)候索引字段非常多的時(shí)候,如果我們想查詢(xún)索引的單個(gè)字段,怎么做呢?

  • 只查詢(xún)mapping
GET /class_1/_mapping

輸出:

{
  "class_1" : {
    "mappings" : {
      "properties" : {
        "name" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "num" : {
          "type" : "long"
        }
      }
    }
  }
}
  • 只查詢(xún)settings
GET /class_1/_settings

輸出:

{
  "class_1" : {
    "settings" : {
      "index" : {
        "refresh_interval" : "3s",
        "number_of_shards" : "3",
        "provided_name" : "class_1",
        "creation_date" : "1670811044703",
        "number_of_replicas" : "1",
        "uuid" : "UGsT0F5nQa-p68I7NbBWqg",
        "version" : {
          "created" : "7060299"
        }
      }
    }
  }
}

修改索引

不同于mysql,你可以通過(guò)一個(gè)update把表的字段改掉,當(dāng)然當(dāng)你數(shù)據(jù)量很小的時(shí)候。在es中,es基于lucene,而lucene中的每個(gè)segment都具有不變性。因此每個(gè)Index一旦創(chuàng)建完成就不可修改。那怎么做呢?修改的另一種方式叫做數(shù)據(jù)遷移,也就是通過(guò)建立新索引,舊數(shù)據(jù)遷移到新索引的形式更新索引,在mysql中,有時(shí)在無(wú)法改變?cè)斫Y(jié)構(gòu)的時(shí)候,我們也是通過(guò)這種方式進(jìn)行的。下面通過(guò)一個(gè)例子給大家體會(huì)下:

語(yǔ)法:

POST _reindex                    
{
 "source":{
     "index":"oldIndex"
 },
 "dest":{
     "index":"newIndex"
 }
}

首先創(chuàng)建class_2

PUT class_2

將class_1轉(zhuǎn)移到class_2上:

POST _reindex                    
{
 "source":{
     "index":"class_1"
 },
 "dest":{
     "index":"class_2"
 }
}

查詢(xún)之后發(fā)現(xiàn)class_2并沒(méi)有發(fā)生什么結(jié)構(gòu)變化,在這之前我們創(chuàng)建點(diǎn)數(shù)據(jù),然后在遷移,這樣看的比較明顯一點(diǎn),向class_1插入數(shù)據(jù), 文檔操作后邊會(huì)給大家講,先簡(jiǎn)單操作一下:

GET /class_1/_doc/
{
  "name":"一年級(jí)",
  "num": 20
}

然后再執(zhí)行_reindex, 查詢(xún)class_2輸出:

{
  "class_2" : {
    "aliases" : {
      "class" : { }
    },
    "mappings" : {
      "properties" : {
        "name" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "num" : {
          "type" : "long"
        }
      }
    },
    "settings" : {
      "index" : {
        "creation_date" : "1670811901557",
        "number_of_shards" : "1",
        "number_of_replicas" : "1",
        "uuid" : "PvK25pp6Tu6A0CiMpArRZQ",
        "version" : {
          "created" : "7060299"
        },
        "provided_name" : "class_2"
      }
    }
  }
}

我們發(fā)現(xiàn),class_1的屬性都被轉(zhuǎn)移到了class_2

刪除索引

語(yǔ)法:

DELETE ${indexName}

我們刪除舊索引class_1

DELETE class_1

在查詢(xún),發(fā)現(xiàn)已經(jīng)找不到class_1

想刪除多個(gè)怎么辦呢? 方法如下:

DELETE ${indexName}, ${indexName}

結(jié)束語(yǔ)

本節(jié)主要講了索引相關(guān)的api操作,索引作為數(shù)據(jù)基石,顯得尤為重要,所以大家在學(xué)習(xí)的時(shí)候,特別是創(chuàng)建索引,一定要多去理解和練習(xí),好比我們?cè)跀?shù)據(jù)庫(kù)中建表一樣,第一步都很重要,因?yàn)檫@個(gè)直接影響到你后邊生產(chǎn)的數(shù)據(jù),所以,在下節(jié),我會(huì)給大家好好理一下mapping。

相關(guān)文章

  • Java多線程中線程間的通信實(shí)例詳解

    Java多線程中線程間的通信實(shí)例詳解

    這篇文章主要介紹了Java多線程中線程間的通信實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • MyBatis與Spring中的SqlSession詳解

    MyBatis與Spring中的SqlSession詳解

    在MyBatis中,你可以使用SqlSessionFactory來(lái)創(chuàng)建SqlSession,使用MyBatis-Spring之后,你不再需要直接使用SqlSessionFactory了,接下來(lái)通過(guò)示例代碼講解MyBatis與Spring中的SqlSession,需要的朋友可以參考下
    2024-05-05
  • Java中關(guān)于http請(qǐng)求獲取FlexManager某設(shè)備分組監(jiān)控點(diǎn)

    Java中關(guān)于http請(qǐng)求獲取FlexManager某設(shè)備分組監(jiān)控點(diǎn)

    這篇文章主要介紹了Java中關(guān)于http請(qǐng)求獲取FlexManager某設(shè)備分組監(jiān)控點(diǎn),本文僅僅介紹了使用http請(qǐng)求獲取FlexManager平臺(tái)某個(gè)FBox盒子即某設(shè)備的監(jiān)控點(diǎn)分組的分組下的所有監(jiān)控點(diǎn)信息,需要的朋友可以參考下
    2022-10-10
  • SpringBoot上傳圖片到指定位置并返回URL的實(shí)現(xiàn)

    SpringBoot上傳圖片到指定位置并返回URL的實(shí)現(xiàn)

    本文主要介紹了SpringBoot上傳圖片到指定位置并返回URL,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下<BR>
    2022-03-03
  • java進(jìn)階之了解SpringBoot的配置原理

    java進(jìn)階之了解SpringBoot的配置原理

    今天帶大家了解SpringBoot的相關(guān)知識(shí),文中對(duì)SpringBoot的配置原理作了非常詳細(xì)的圖文示例及介紹,需要的朋友可以參考下
    2021-06-06
  • Java?Thread?類(lèi)和Runnable?接口詳解

    Java?Thread?類(lèi)和Runnable?接口詳解

    這篇文章主要介紹了Java?Thread?類(lèi)和Runnable接口詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • springboot 啟動(dòng)時(shí)初始化數(shù)據(jù)庫(kù)的步驟

    springboot 啟動(dòng)時(shí)初始化數(shù)據(jù)庫(kù)的步驟

    這篇文章主要介紹了springboot 啟動(dòng)時(shí)初始化數(shù)據(jù)庫(kù)的步驟,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2021-01-01
  • 淺談Java8對(duì)字符串連接的改進(jìn)正確姿勢(shì)

    淺談Java8對(duì)字符串連接的改進(jìn)正確姿勢(shì)

    這篇文章主要介紹了Java8:對(duì)字符串連接的改進(jìn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Java中的set集合是什么意思

    Java中的set集合是什么意思

    這篇文章主要介紹了Java中的set集合是什么意思,詳細(xì)地講解一下Collection集合中的另外一個(gè)分支——Set系列集合,需要的朋友可以參考下
    2022-05-05
  • 詳解Java8中Optional的常見(jiàn)用法

    詳解Java8中Optional的常見(jiàn)用法

    Opitonal是java8引入的一個(gè)新類(lèi),目的是為了解決空指針異常問(wèn)題。本文將通過(guò)示例為大家詳細(xì)講講Optional的常見(jiàn)用法,需要的可以參考一下
    2022-09-09

最新評(píng)論

平远县| 吉隆县| 南涧| 扶余县| 来安县| 钟祥市| 林西县| 宁乡县| 桐梓县| 巨鹿县| 嘉黎县| 裕民县| 鄯善县| 房山区| 怀安县| 宁明县| 玉林市| 亳州市| 桂平市| 景洪市| 高碑店市| 盘锦市| 门头沟区| 久治县| 马山县| 沂源县| 修武县| 晋城| 新竹县| 青龙| 贵定县| 封开县| 屏南县| 乌拉特中旗| 偃师市| 辽宁省| 盐边县| 洪洞县| 徐闻县| 北辰区| 金山区|