001-ElasticSearch入门

文章介绍了ElasticSearch的核心概念,包括倒排索引和文档结构,详细阐述了节点配置、集群设置以及数据存储。同时,文章列出了创建、查询、删除索引的操作API,以及文档的增删改查方法,强调了并发修改时的版本控制和查询语法。
摘要由CSDN通过智能技术生成

ElasticSearch

概念

倒排索引

由id查询到内容是正排索引
有内容查询id则为倒排索引

把内容分词后和id关联
通过分析过后的内容找到id从而找到整体内容

术语

  1. Index
    文档集合:小写字母
  2. Document
    文档是搜索的最小单位,文档JOSN格式化后保存在ES中
    所以对文档的格式没有要求
  3. 元数据
    _index:文档所属的索引名
    _type:文档所属的类型名
    _id:文档唯—ld
    _source: 文档的原始Json数据
    _version: 文档的版本号,修改删除操作_version都会自增1
    _seq_no: 和_version一样,一旦数据发生更改,数据也一直是累计的。Shard级别严格递增,保证后写入的Doc的_seq_no大于先写入的Doc的_seq_no。
    _primary_term: _primary_term主要是用来恢复数据时处理当多个文档的_seq_no一样时的冲突,避免Primary Shard上的写入被覆盖。每当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1

安装

各文件目录结构

  1. bin
    脚本文件,包括启动elasticsearch,安装插件,运行统计数据等
  2. config
    配置文件目录,如elasticsearch配置、角色配置、jvm配置等。
  3. jdk
    java运行环境
  4. data
    默认的数据存放目录,包含节点、分片、索引、文档的所有数据,生产环境需要修改。
  5. lib
    elasticsearch依赖的Java类库
  6. logs
    默认的日志文件存储路径,生产环境需要修改。
  7. modules
    包含所有的Elasticsearch模块,如Cluster、Discovery、Indices等。
  8. plugins
    已安装插件目录

主要配置

  • cluster.name
    当前节点所属集群名称,多个节点如果要组成同一个集群,那么集群名称一定要配置成相同。默认值elasticsearch,生产环境建议根据ES集群的使用目的修改成合适的名字。
  • node.name
    当前节点名称,默认值当前节点部署所在机器的主机名,所以如果一台机器上要起多个ES节点的话,需要通过配置该属性明确指定不同的节点名称。
  • path.data
    配置数据存储目录,比如索引数据等,默认值 $ES_HOME/data,生产环境下强烈建议部署到另外的安全目录,防止ES升级导致数据被误删除。
  • path.logs
    配置日志存储目录,比如运行日志和集群健康信息等,默认值 $ES_HOME/logs,生产环境下强烈建议部署到另外的安全目录,防止ES升级导致数据被误删除。
  • bootstrap.memory_lock
    配置ES启动时是否进行内存锁定检查,默认值true。
    ES对于内存的需求比较大,一般生产环境建议配置大内存,如果内存不足,容易导致内存交换到磁盘,严重影响ES的性能。所以默认启动时进行相应大小内存的锁定,如果无法锁定则会启动失败。
    非生产环境可能机器内存本身就很小,能够供给ES使用的就更小,如果该参数配置为true的话很可能导致无法锁定内存以致ES无法成功启动,此时可以修改为false。
  • network.host
    配置能够访问当前节点的主机,默认值为当前节点所在机器的本机回环地址127.0.0.1 和[::1],这就导致默认情况下只能通过当前节点所在主机访问当前节点。可以配置为 0.0.0.0 ,表示所有主机均可访问。
  • http.port
    配置当前ES节点对外提供服务的http端口,默认值 9200
  • discovery.seed_hosts
    配置参与集群节点发现过程的主机列表,说白一点就是集群中所有节点所在的主机列表,可以是具体的IP地址,也可以是可解析的域名。
  • cluster.initial_master_nodes
    配置ES集群初始化时参与master选举的节点名称列表,必须与node.name配置的一致。ES集群首次构建完成后,应该将集群中所有节点的配置文件中的cluster.initial_master_nodes配置项移除,重启集群或者将新节点加入某个已存在的集群时切记不要设置该配置项。

操作API

创建索引(index)

#创建索引时可以设置分片数和副本数
PUT /es_db
{
    "settings" : {
        "number_of_shards" : 3,
        "number_of_replicas" : 2
    }
}

查询索引(index)

#查询索引
GET /es_db

#es_db是否存在
HEAD /es_db

删除索引(index)

DELETE /es_db

ElasticSearch文档操作(Document)

# [PUT/POST] 索引/[_doc/_create]/[id]
# 如果PUT 则必须指定ID操作
# 如果POST id已存在则删除原内容后新增内容版本增加
# 不存在则新增
# 没有指定id则ES自动生成
PUT /es_db/_doc/1
{
 body
}

# [PUT/POST] 索引/[_update]/[id]
# 文档必须已经存在,更新只会对相应字段做增量修改
POST /es_db/_update/1
{
 body
}

并发修改文档(Document)

# 并发环境下使用乐观锁机制修改文档时
# 要带上当前文档的_seq_no和_primary_term进行更新
# 如果版本号不对,会抛出版本冲突异常
POST /es_db/_doc/2?if_seq_no=21&if_primary_term=6
{
  "name": "李四xxx"
}

删除

DELETE /es_db/_doc/1

查询

注: 这里只是使用URI进行检查查询
后续有复杂的组合查询DSL分析

# 根据id查询
GET /es_db/_doc/1

# 条件查询 /索引名称/_doc/_search
GET /es_db/_doc/_search

# 查询age等于28GET /es_db/_doc/_search?q=age:28

# 查询age在2526岁之间的
GET /es_db/_doc/_search?q=age[25 TO 26]

#查询年龄小于等于28岁的 :<=
GET /es_db/_doc/_search?q=age:<=28
#查询年龄大于28前的 :>
GET /es_db/_doc/_search?q=age:>28

#分页查询 from=*&size=*
GET /es_db/_doc/_search?q=age[25 TO 26]&from=0&size=1

#对查询结果只输出某些字段 _source=字段,字段
GET /es_db/_doc/_search?_source=name,age

#对查询结果排序 sort=字段:desc/asc
GET /es_db/_doc/_search?sort=age:desc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
spring-data-elasticsearch官方教程文档提供了关于如何使用spring-data-elasticsearch框架进行Elasticsearch数据库操作的详细指导。该文档分为几个部分,包括介绍、快速入门、基本概念、查询构造器和复杂查询等。 文档的介绍部分简要介绍了spring-data-elasticsearch框架以及它提供的主要功能。快速入门部分通过一个简单的示例演示了如何配置spring-data-elasticsearch并进行基本的CRUD操作。该示例涵盖了创建索引、映射实体类、保存数据、查询数据以及删除数据。通过这个示例,读者可以迅速了解到spring-data-elasticsearch的基本用法。 基本概念部分详细介绍了spring-data-elasticsearch中的一些重要概念,包括实体类映射、索引操作、文档操作、字段映射、分页和排序等。这些概念对于深入理解spring-data-elasticsearch的使用非常重要。 查询构造器部分介绍了spring-data-elasticsearch提供的查询构造器的使用方法。该部分通过实例演示了如何使用查询构造器进行基本查询、范围查询、模糊查询以及布尔查询等。读者可以通过这些示例快速掌握查询构造器的使用。 最后一部分是关于复杂查询的介绍。这一部分介绍了如何使用原生查询、使用注解进行查询以及使用自定义实现进行查询等。复杂查询是spring-data-elasticsearch一个非常重要的特性,通过它可以实现更加灵活和高级的查询功能。 总体来说,spring-data-elasticsearch官方教程文档提供了丰富的实例和详细的说明,对于想要学习和使用spring-data-elasticsearch框架的开发者来说,是一份非常有价值的指南。读者可以通过该文档逐步了解spring-data-elasticsearch的相关概念和基本用法,并通过实例演示快速上手。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值