# es **Repository Path**: lvzhenchao/es ## Basic Information - **Project Name**: es - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-18 - **Last Updated**: 2024-08-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 1、es相关基本概念 ## 1-1、相关端口 - 9200:是es节点与外部通讯使用的端口,是http协议的restful接口(各种curd操作都是走的该端口) - 9300:是es节点之间通讯使用的端口,是tcp通讯端口,集群间和TCP client都走的它 ## 1-2、常见概念 - index:索引,等同于表 - document:文档,等同于行 - field:字段,等同于column - shard:分片,等同于分表 - replicas:副本,类似主从,每个node一个副本 ## 2、ES倒排索引以及基本概念 ### 2-1、倒排索引 - 含义:正向索引是通过key找value,反向索引是通过value找key - 数据结构:es引擎把文档数据写入到倒排索引(Inverted Index)的数据结构中 - 倒排索引:建立的事分词(Term)和文档(Document)之间的映射关系 - 倒排索引中:数据是面向分词(Term)而不是面向文档的 ### 2-2、增删改查 #### 2-2-1、创建索引:PUT/ - 索引名:只能小写 - 索引名:不能包括 \,/,*,?,",<,>,|,``,#,空格 - 索引名:不能以 -,_,+开头 - 索引名:不能.或者.. #### 2-2-2、获取索引 - GET /_cat/indices - GET /索引名 ### 2-2-3、删除索引 - DELETE /索引名 ### 2-2-4、索引是否存在 - HEAD / ### 2-3、文档的新增以及获取【类似数据表加数据】 - version: 悲观锁和乐观锁 - 悲观锁:常见于关系型数据库;任何情况下,都上锁,上锁之后只有一个线程可以操作数据 - 乐观锁:乐观状态下是不加锁的,每个线程都可以任意操作,依靠数据版本号和自身是否一致来保证数据的一致性 #### 2-3-1、新增文档 - POST /索引/_doc/ID【非必填】 #### 2-3-2、获取文档 - 获取指定数据:GET /索引名称/_doc/ID - 获取所有数据:GET /索引名称/_doc/_search #### 2-3-3、更新文档 - POST /索引/_update/ID值 #### 2-3-4、删除文档 - DELETE /索引/_doc/ID值 ### 2-4、批量操作 - POST /_bulk ## 3、es查询 - URI查询 - DSL查询 ### 3-1、URI查询 - 含义:在请求的参数里带上查询的条件,去获取查询数据 - GET /索引/_search:类似select * ### 3-2、DSL查询 - 含义:基于JSON格式,官方推荐 - 优势:强大的查询和聚合功能 #### 3-2-1、range-sort查询 - 特点:尽量多类比MySQL查询 #### 3-2-2、match查询 - 补充:match查询会根据字段进行分词,再进行分词查询,模糊匹配;类似MySQL的like模糊查询 #### 3-2-3、term查询 - 补充:term查询不会对查询的字段进行分词查询,会采用【精确匹配】;类似MySQL =