首页 > 其他分享 >Elasticsearch之倒排索引、索引操作

Elasticsearch之倒排索引、索引操作

时间:2024-04-09 11:45:13浏览次数:13  
标签:test1 文件 倒排 settings 索引 Elasticsearch 文章

目录

一、Elasticsearch之倒排索引

1. 倒排索引是什么

  • 倒排索引源于实际应用中需要根据属性的值来查找记录,这种索引表中的每一个项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而成为倒排索引。带有倒排索引的文件我们称之为倒排索引文件,简称倒排文件

2. 举例

例如有如下三个文件:

文件A:通过Python django搭建网站

文件B:通过Python scrapy爬取网站数据

文件C:scrapy-redis分布式爬虫

现在我们要查询,带有Python的文件,正常是对每个文件进行遍历,每个文件遍历一次,如果文件特别大,每个文件有一亿个字符,总共有一亿个文件,每个我们都要遍历,非常消耗资源

在存储文件之前,先对文件进行分析,将文件分词,对分词建立索引,例如下面一句话:

1 今天是星期天我们出去玩

2 明天是星期天,放假

3 今天天气很晴朗

4 xxx

5 他们出去玩了

  • 我们大致整理一下,如下表:
关键词 文章
今天 文章1,文章3
星期天 文章1,文章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)

3. 倒排索引待解决的问题

1 大小写转换问题,如python和Python应该为同一个词

2 词干抽取,looking和look应该处理为同一个词

3 分词,如 屏蔽系统 是屏蔽 和系统两个词还是 为屏蔽系统一个词

4 倒排索引文件过大,需要压缩编码

二、Elasticsearch之索引操作

2.1 创建索引

# 新建一个test2的索引,索引分片数量为5,索引副本数量为1
PUT test2
{
  "settings": {
    "index":{
      "number_of_shards":5,
      "number_of_replicas":1
    }
  }
}
'''
number_of_shards
每个索引的主分片数,默认值是 5 。这个配置在索引创建后不能修改。
number_of_replicas
每个主分片的副本数,默认值是 1 。对于活动的索引库,这个配置可以随时修改。
'''

2.2 查询索引配置

#获取test2索引的配置信息
GET test2/_settings
#获取所有索引的配置信息
GET _all/_settings
#同上
GET _settings
#获取test1和test2索引的配置信息
GET test1,test2/_settings

2.3 更新索引

  • 索引创建后无法修改分片数,但可以修改副本数
# 修改test1索引副本数量为2
PUT test1/_settings
{
  "number_of_replicas": 2
}
#如遇到报错:cluster_block_exception,因为
#这是由于ES新节点的数据目录data存储空间不足,导致从master主节点接收同步数据的时候失败,此时ES集群为了保护数据,会自动把索引分片index置为只读read-only
PUT  _all/_settings
{
"index": {
  "blocks": {
    "read_only_allow_delete": false
    }
  }
}

2.4 删除索引

#删除test1索引
DELETE test1

标签:test1,文件,倒排,settings,索引,Elasticsearch,文章
From: https://www.cnblogs.com/Mcoming/p/18123611

相关文章

  • Elasticsearch之-mapping 映射管理
    目录Elasticsearch之-mapping映射管理一、映射介绍1.1字段数据类型1.2映射参数二、创建索引时指定映射2.16.x的版本写法2.27.x版本以后2.3插入数据测试三、查看索引Elasticsearch之-mapping映射管理在Elasticsearch6.0.0或更高版本中创建的索引只包含一个mappingtype......
  • Elasticsearch之数据的增删查改(CURD)
    目录Elasticsearch之数据的增删查改(CURD)一、CURD之Create(增)二、CURD之Update(改)三、CURD之Delete(删)四、CURD之Retrieve(查)Elasticsearch之数据的增删查改(CURD)一、CURD之Create(增)注意:当执行PUT命令时,如果数据不存在,则新增该条数据,如果数据存在则修改该条数据(这种修改相当于删......
  • MongoDB 中索引的构建阶段
    1.Xlock收到创建索引的请求时,会在集合上获取排他的X锁。该锁会停止该集合上的所有读/写操作{"t":{"$date":"2024-03-13T05:29:35.925+00:00"},"s":"I","c":"INDEX","id":20438,"ctx":"conn15536&quo......
  • openGauss Gin 索引
    openGaussGin索引概述GIN(GeneralizedInvertedIndex)通用倒排索引,是首选的文本搜索索引类型。倒排索引对应的列上的数据类型通常是一个多值类型,索引中包含每个单词的索引条目,以及所匹配的位置的压缩列表。如果搜索条件是多个单词,可以先使用第一个单词进行匹配,再在找到的结果中......
  • Elasticsearch 配置内置分析器(3)
    一.内置分析器(analyzer)内置分析器无需任何配置即可直接使用,也支持配置选项来更改其行为。下面示例,分别使用了自定义分析器与内置分析器PUTmy-index-000001{"settings":{"analysis":{"analyzer":{"std_english":{#自定义分析......
  • Elasticsearch 悬挂索引分析和自己的一点见解
    在Elasticsearch的实战中,悬挂索引是一个既常见又容易引起困扰的概念。今天,我将分享一次处理集群状态为RED,原因为DANGLING_INDEX_IMPORTED 的实战经验,深入探讨悬挂索引的定义、产生原因、管理方法,以及如何有效处理它们,确保读者能够明白并解决自己面临的问题。值得一提的是,......
  • openGauss 在线添加索引
    在线添加索引可获得性本特性自openGauss1.1.0版本开始引入。特性简介通过createindexconcurrently语法,以不阻塞DML的方式在线创建索引。客户价值创建索引时指定concurrently关键字,可以实现创建过程中不阻塞DML,不阻塞用户在线业务。特性描述创建索引时,一般会阻塞其他语......
  • 为什么索引结构默认使用B+Tree?为什么需要注意联合索引中的顺序?最左前缀原则是什么?
    (1)为什么索引结构默认使用B+Tree,而不是B-Tree,Hash,二叉树,红黑树?B-tree:B+Tree相比于B-Tree,所有的数据都存储在叶子节点,并且叶子节点之间用指针相连形成了一个有序链表,这有利于范围查询和全表扫描时连续地读取磁盘上的数据,极大地降低了磁盘I/O次数。而在B-Tree中,数据分布在所有节......
  • linux 环境下 elasticsearch 及 python 相关库的使用
    -elasticsearch是什么?elasticsearch简称es,是一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能。-安装1、下载官网下载地址2、解压tarzxvfelasticsearch-8.13.0-linux-x86_64.tar.gz-C/usr/local/3、解决JDK依赖问题新版本的es压缩......
  • MOGDB/openGauss索引推荐及虚拟索引
    MOGDB/openGauss索引推荐及虚拟索引索引推荐在ORACLE的优化中,可能大家有接触过SQLTuningAdvisor(SQL调优顾问,STA),类似的MOGDB/openGauss的索引推荐(Index-advisor)功能也可以对你的查询进行分析,并提出合理的创建索引的建议。ORACLE的STA输出是以一种意见或者建议的......