elasticsearch7基础用法及java中使用

本文介绍了Elasticsearch7的基本用法,包括RESTful风格操作、JSON格式、正排与倒排索引,以及Java中如何进行索引、查询和数据操作。详细讲解了集群节点配置、Elasticsearch进阶概念如索引、类型、文档、字段和映射,还涉及分布式集群、SpringData集成以及优化策略和面试常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RESTful 风格写法:

GET、POST、PUT、DELETE、HEAD。

JSON字符串:网络中传递的字符串的格式符合JSON格式。

正排(正向)索引:

id content
1001 my name is zhang san
1002 i name is li si
1003 my name is wang wu

倒排索引:

keyword id
name 1001,1002,1003
zhang 1001a
my 1001,1003

创建索引

PUT请求:http://127.0.0.1:9200/索引名称

返回值:

{
 "acknowledged"【响应结果】: true, # true 操作成功 //创建索引是否成功
 "shards_acknowledged"【分片结果】: true, # 分片操作成功
 "index"【索引名称】: "shopping" //创建的索引名称
}
# 注意:创建索引库的分片数默认 1 片,在 7.0.0 之前的 Elasticsearch 版本中,默认 5 片
表头 含义
health 当前服务器健康状态: green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)
status 索引打开、关闭状态
index 索引名
uuid 索引统一编号
pri 主分片数量
rep 副本数量
docs.count 可用文档数量
docs.deleted 文档删除状态(逻辑删除)
store.size 主分片和副分片整体占空间大小
pri.store.size 主分片占空间大小
查看单个索引GET响应返回结果
{
 "shopping"【索引名】: { 
 "aliases"【别名】: {},
 "mappings"【映射】: {},
 "settings"【设置】: {
 "index"【设置 - 索引】: {
 "creation_date"【设置 - 索引 - 创建时间】: "1614265373911",
 "number_of_shards"【设置 - 索引 - 主分片数量】: "1",
 "number_of_replicas"【设置 - 索引 - 副分片数量】: "1",
 "uuid"【设置 - 索引 - 唯一标识】: "eI5wemRERTumxGCc1bAk2A",
 "version"【设置 - 索引 - 版本】: {
 "created": "7080099"
 },
 "provided_name"【设置 - 索引 - 名称】: "shopping"
 }
 }
 }
}

全部查询:_search

单条数据查询:_doc

全量更新:PUT

单属性更新:POST

删除数据:DELETE

创建文档:PUT响应返回结果

创建文档:PUT响应返回结果
{
 "_index"【索引】: "shopping",
 "_type"【类型-文档】: "_doc",
 "_id"【唯一标识】: "Xhsa2ncBlvF_7lxyCE9G", #可以类比为 MySQL 中的主键,随机生成
 "_version"【版本】: 1,
 "result"【结果】: "created", #这里的 create 表示创建成功
 "_shards"【分片】: {
 "total"【分片 - 总数】: 2,
 "successful"【分片 - 成功】: 1,
 "failed"【分片 - 失败】: 0
 },
 "_seq_no": 0,
 "_primary_term": 1
}

查看文档:GET响应返回结果

查看文档:GET响应返回结果
{
 "_index"【索引】: "shopping",
 "_type"【文档类型】: "_doc",
 "_id": "1",
 "_version": 2,
 "_seq_no": 2,
 "_primary_term": 2,
 "found"【查询结果】: true, # true 表示查找到,false 表示未查找到
 "_source"【文档源信息】: {
 "title": "华为手机",
 "category": "华为",
 "images": "http://www.gulixueyuan.com/hw.jpg",
 "price": 4999.00
 }
}

多条件查询写法:

多条件查询写法:
{
•   "query":{//表示查询
•       "match":{//部分匹配(match_all//全量查询,match_phrase//全匹配)
•           "条件key":"条件value"
•       }   
•   },
•   "from":0,//起始位置(页码-1*每页数据条数)
•   "size":2,//每页查询条数
•   "_soource":{
•       "title"//想要查询出来的字段
•   },
•   "sort":{
•       "price":{//需要排序字段
•           "order":"asc"//desc  排序方式
•       }
•   }
}
{
•   "query":{
•       "bool":{//条件参数
•           "must":[//多个条件同时成立   should满足一个条件即成立
•               {
•                   "match":{
•                       "条件key":"条件value"
•                   }
•               },
•               {
•                   "match":{
•                       "条件key":"条件value"
•                   }
•               }   
•           ],
•           "filter":{//过滤
•               "range":{//范围
•                   "price":{//条件
•                       "gt":5000//大于
•                   }
•               }
•           }
•       }
•   },
•   "highlight":{//高亮
•       "pre_tags": "<font color='red'>",
•       "post_tags": "</font>",
•       "fields":{//字段
•           "高亮字段" : {}
•       }
•   }
}
{
•   "aggs":{//聚合操作
•       "price_group":{//名称,随意起名 (price_avg:平均值)
•           "terms":{//分组 (avg:平均值)
•               "分组字段" : "price" //分组字段
•           }
•       }
•   },
•   "size":0 //表示不需要原始数据
}

PUT添加映射关系 GET获取数据

PUT添加映射关系
GET获取数据
{
    "properties":{//映射
        "name":{
            "type" : "text",//查询不需要完全匹配
            "index" : true//是否能被索引,是否能被查询
        },
        "sex":{
            "type" : "keyword",//查询需要完全匹配(不能被分词)
            "index" : true
        },
        "tel":{
            "type" : "keyword",
            "index" : false
        }
    }
}

Java中的使用

在Maven项目中的pom文件下引入依赖

在Maven项目中的pom文件下引入依赖 
<dependencies>
 <dependency>
 <groupId>org.elasticsearch</groupId>
 <artifactId>elasticsearch</artifactId>
 <version>7.8.0</version>
 </dependency>
 <!-- elasticsearch 的客户端 -->
 <dependency>
 <groupId>org.elasticsearch.client</groupId>
 <artifactId>elasticsearch-rest-high-level-client</artifactId>
 <version>7.8.0</version>
 </dependency>
 <!-- elasticsearch 依赖 2.x 的 log4j -->
 <dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-api</artifactId>
 <version>2.8.2</version>
 </dependency>
 <dependency>
 <groupId>org.apache.logging.log4j</groupId>
 <artifactId>log4j-core</artifactId>
 <version>2.8.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
 <!-- junit 单元测试 -->
 <dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>4.12</version>
 </dependency>
</dependencies>

ES索引在java里简单操作:

    /
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值