Elasticsearch之倒排索引及索引操作

 更新时间:2022年04月19日 17:47:24   作者:Jeff的技术栈  
这篇文章主要为大家介绍了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 分词,如 屏蔽系统 是屏蔽 和系统两个词还是 为屏蔽系统一个词

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 。这个配置在索引创建后不能修改。
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新节点的数据目录data存储空间不足,导致从master主节点接收同步数据的时候失败,此时ES集群为了保护数据,会自动把索引分片index置为只读read-only
PUT  _all/_settings
{
"index": {
  "blocks": {
    "read_only_allow_delete": false
    }
  }
}

四 删除索引

#删除lqz索引
DELETE lqz

以上就是Elasticsearch之倒排索引及索引操作的详细内容,更多关于Elasticsearch倒排索引索引操作的资料请关注脚本之家其它相关文章!

相关文章

  • Python经验总结:两种Type Error问题

    Python经验总结:两种Type Error问题

    这篇文章主要介绍了Python经验总结:两种Type Error问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Python中导入自定义模块的几种方法总结

    Python中导入自定义模块的几种方法总结

    这篇文章主要介绍了Python中导入自定义模块的几种方法总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • python 中关于pycharm选择运行环境的问题

    python 中关于pycharm选择运行环境的问题

    这篇文章主要介绍了python 中关于pycharm选择运行环境的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • python代码实现逻辑回归logistic原理

    python代码实现逻辑回归logistic原理

    这篇文章主要介绍了python代码实现逻辑回归logistic原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python通过字典dict判断指定键值是否存在的方法

    python通过字典dict判断指定键值是否存在的方法

    这篇文章主要介绍了python通过字典dict判断指定键值是否存在的方法,实例分析了Python中使用has_key及in判断指定键值是否存在的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • Python之循环结构

    Python之循环结构

    今天小编就为大家分享一篇关于Python之循环结构,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • pyecharts结合flask框架的使用

    pyecharts结合flask框架的使用

    这篇文章主要介绍了pyecharts结合flask框架,主要是介绍如何在Flask框架中使用pyecharts,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Python教程之无限迭代器的使用详解

    Python教程之无限迭代器的使用详解

    Python的Itetool是一个模块,它提供了各种函数,这些函数在迭代器上工作以产生复杂的迭代器。该模块作为一个快速,内存效率的工具,可以单独使用或组合使用以形成迭代器代数。本文就来和大家详细聊聊无限迭代器,感兴趣的可以了解一下
    2022-09-09
  • Python实现对文件类型的获取方法

    Python实现对文件类型的获取方法

    在工作中时常需要对文件进行各种处理,如上传下载,压缩解压等,需要获取文件的类型,所以本文给大家介绍了使用Python实现对文件类型的获取方法,文中通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-08-08
  • python PyAutoGUI 模拟鼠标键盘操作和截屏功能

    python PyAutoGUI 模拟鼠标键盘操作和截屏功能

    一款跨平台/无依赖的自动化测试工具,目测只能控制鼠标/键盘/获取屏幕尺寸/弹出消息框/截屏。这篇文章主要介绍了python PyAutoGUI 模拟鼠标键盘操作和截屏功能,需要的朋友可以参考下
    2019-08-08

最新评论