Elasticsearch之倒排索引及索引操作
倒排索引
一 倒排索引是什么
倒排索引源于實際應用中需要根據屬性的值來查找記錄,這種索引表中的每一個項都包括一個屬性值和具有該屬性值的各記錄的地址。由于不是由記錄來確定屬性值,而是由屬性值來確定記錄的位置,因而成為倒排索引。帶有倒排索引的文件我們稱之為倒排索引文件,簡稱倒排文件
二 舉例
例如有如下三個文件:
文件A:通過Python django搭建網站
文件B:通過Python scrapy爬取網站數據
文件C:scrapy-redis分布式爬蟲
現在我們要查詢,帶有Python的文件,正常是對每個文件進行遍歷,每個文件遍歷一次,如果文件特別大,每個文件有一億個字符,總共有一億各文件,每個我們都要遍歷,非常消耗資源
在存儲文件之前,先對文件進行分析,將文件分詞,對分詞建立索引,例如下面一句話
1 今天是星期天我們出去玩
2 明天是星期天,放假
3 今天天氣很晴朗
4 xxx
5 他們出去玩了
關鍵詞 | 文章 |
---|---|
今天 | 文章1,文章3 |
星期天 | 文章2 |
出去玩 | 文章5,文章1 |
實際上es在做存儲的時候,更詳細,如下表
關鍵詞 | 文章 |
---|---|
今天 | (文章1,<2,10>,2) (文章3,<8>,1) |
星期天 | (文章2,<12,25,100>,3) |
出去玩 | (文章5,<11,24,89>,3)(文章1,<8,19>,2) |
今天出現在哪個文章,出現的位置和出現的次數
三 倒排索引待解決的問題
1 大小寫轉換問題,如python和Python應該為同一個詞
2 詞干抽取,looking和look應該處理為同一個詞
3 分詞,如 屏蔽系統(tǒng) 是屏蔽 和系統(tǒng)兩個詞還是 為屏蔽系統(tǒng)一個詞
4 倒排索引文件過大,需要壓縮編碼
索引操作
具體操作可以查看官方文檔
https://www.elastic.co/guide/en/elasticsearch/reference/7.5/indices.html>
官方2版本的中文文檔
https://www.elastic.co/guide/cn/elasticsearch/guide/current/index-settings.html
一 索引初始化
#新建一個lqz2的索引,索引分片數量為5,索引副本數量為1 PUT lqz2 { "settings": { "index":{ "number_of_shards":5, "number_of_replicas":1 } } } ''' number_of_shards 每個索引的主分片數,默認值是 5 。這個配置在索引創(chuàng)建后不能修改。 number_of_replicas 每個主分片的副本數,默認值是 1 。對于活動的索引庫,這個配置可以隨時修改。 '''
二 查詢索引配置
#獲取lqz2索引的配置信息 GET lqz2/_settings #獲取所有索引的配置信息 GET _all/_settings #同上 GET _settings #獲取lqz和lqz2索引的配置信息 GET lqz,lqz2/_settings
三 更新索引
#修改索引副本數量為2 PUT lqz/_settings { "number_of_replicas": 2 } #如遇到報錯:cluster_block_exception,因為 #這是由于ES新節(jié)點的數據目錄data存儲空間不足,導致從master主節(jié)點接收同步數據的時候失敗,此時ES集群為了保護數據,會自動把索引分片index置為只讀read-only PUT _all/_settings { "index": { "blocks": { "read_only_allow_delete": false } } }
四 刪除索引
#刪除lqz索引 DELETE lqz
以上就是Elasticsearch之倒排索引及索引操作的詳細內容,更多關于Elasticsearch倒排索引索引操作的資料請關注腳本之家其它相關文章!
相關文章
python解決Missing 1 required positional ar
這篇文章主要介紹了python解決Missing 1 required positional argument報錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12基于Django OneToOneField和ForeignKey的區(qū)別詳解
這篇文章主要介紹了基于Django OneToOneField和ForeignKey的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03