網(wǎng)站首頁 編程語言 正文
倒排索引
一 倒排索引是什么
倒排索引源于實際應(yīng)用中需要根據(jù)屬性的值來查找記錄,這種索引表中的每一個項都包括一個屬性值和具有該屬性值的各記錄的地址。由于不是由記錄來確定屬性值,而是由屬性值來確定記錄的位置,因而成為倒排索引。帶有倒排索引的文件我們稱之為倒排索引文件,簡稱倒排文件
二 舉例
例如有如下三個文件:
文件A:通過Python django搭建網(wǎng)站
文件B:通過Python scrapy爬取網(wǎng)站數(shù)據(jù)
文件C:scrapy-redis分布式爬蟲
現(xiàn)在我們要查詢,帶有Python的文件,正常是對每個文件進(jìn)行遍歷,每個文件遍歷一次,如果文件特別大,每個文件有一億個字符,總共有一億各文件,每個我們都要遍歷,非常消耗資源
在存儲文件之前,先對文件進(jìn)行分析,將文件分詞,對分詞建立索引,例如下面一句話
1 今天是星期天我們出去玩
2 明天是星期天,放假
3 今天天氣很晴朗
4 xxx
5 他們出去玩了
關(guān)鍵詞 | 文章 |
---|---|
今天 | 文章1,文章3 |
星期天 | 文章2 |
出去玩 | 文章5,文章1 |
實際上es在做存儲的時候,更詳細(xì),如下表
關(guān)鍵詞 | 文章 |
---|---|
今天 | (文章1,<2,10>,2) (文章3,<8>,1) |
星期天 | (文章2,<12,25,100>,3) |
出去玩 | (文章5,<11,24,89>,3)(文章1,<8,19>,2) |
今天出現(xiàn)在哪個文章,出現(xiàn)的位置和出現(xiàn)的次數(shù)
三 倒排索引待解決的問題
1 大小寫轉(zhuǎn)換問題,如python和Python應(yīng)該為同一個詞
2 詞干抽取,looking和look應(yīng)該處理為同一個詞
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的索引,索引分片數(shù)量為5,索引副本數(shù)量為1
PUT lqz2
{
"settings": {
"index":{
"number_of_shards":5,
"number_of_replicas":1
}
}
}
'''
number_of_shards
每個索引的主分片數(shù),默認(rèn)值是 5 。這個配置在索引創(chuàng)建后不能修改。
number_of_replicas
每個主分片的副本數(shù),默認(rèn)值是 1 。對于活動的索引庫,這個配置可以隨時修改。
'''
二 查詢索引配置
#獲取lqz2索引的配置信息
GET lqz2/_settings
#獲取所有索引的配置信息
GET _all/_settings
#同上
GET _settings
#獲取lqz和lqz2索引的配置信息
GET lqz,lqz2/_settings
三 更新索引
#修改索引副本數(shù)量為2
PUT lqz/_settings
{
"number_of_replicas": 2
}
#如遇到報錯:cluster_block_exception,因為
#這是由于ES新節(jié)點的數(shù)據(jù)目錄data存儲空間不足,導(dǎo)致從master主節(jié)點接收同步數(shù)據(jù)的時候失敗,此時ES集群為了保護(hù)數(shù)據(jù),會自動把索引分片index置為只讀read-only
PUT _all/_settings
{
"index": {
"blocks": {
"read_only_allow_delete": false
}
}
}
四 刪除索引
#刪除lqz索引
DELETE lqz
原文鏈接:https://www.cnblogs.com/guyouyin123/p/13308588.html
相關(guān)推薦
- 2022-10-26 Python?模擬死鎖的常見實例詳解_python
- 2022-05-15 C++設(shè)計模式中的觀察者模式一起來看看_C 語言
- 2022-09-17 使用cache加快編譯速度的命令詳解_相關(guān)技巧
- 2023-12-07 WARNING: Access control is not enabled for the dat
- 2023-07-16 oracle 加解密函數(shù)
- 2022-05-13 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)筆記——順序存儲結(jié)構(gòu)實現(xiàn)棧
- 2022-06-15 Win10下通過Ubuntu安裝Redis的過程_Redis
- 2023-01-01 Objects?are?not?valid?as?a?React?child報錯解決_React
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支