Elastic Search 的基本 使用

Elaticsearch是一个开源的==高扩展的分布式全文检索引擎==,它可以近乎实时的检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。ES使用Java开发。Lucene作为其核心来实现所有索引和搜索的功能,它的目的是通过简单的RESTful API来隐藏Lucene的复杂性。
1
索引操作






1234
添加索引
输入如下地址 如图1所示 put请求 后面的test是索引名
http://127.0.0.1:9200/test
这是他的返回结果
{
"acknowledged": true, // 表示是否创建成功
"shards_acknowledged": true, // 表示在超时之前,对于索引中的每份切片,是否已经启动了必要数量的切片副本。
"index": "test" // 索引名
}
查看指定的索引信息
输入如下地址 如图2所示 get请求 后面的test是索引名
http://127.0.0.1:9200/test
返回结果如下
{
// 索引名
"test": {
// 用于存储别名相关的配置信息。在此结果中,别名未定义。
"aliases": {},
// 这是一个空对象,用于存储索引的映射信息,包括字段的数据类型、分词器等。在此结果中,映射未定义。
"mappings": {},
// 索引的配置信息,包含了索引级别的各种配置项
"settings": {
// 索引级别的设置信息
"index": {
// 路由策略的配置信息
"routing": {
// 数据分片分配的配置信息
"allocation": {
// 包含数据分片分配相关配置的对象
"include": {
// 控制数据分配偏好的配置项,指定了数据分配的偏好策略为"data_content"
"_tier_preference": "data_content"
}
}
},
// 索引库分片数 当前索引的分片数为1
"number_of_shards": "1",
// 索引库名称
"provided_name": "test",
// 创建时间 时间戳
"creation_date": "1734059722929",
// 索引库副本数
"number_of_replicas": "1",
// 唯一标识 索引的id
"uuid": "ZTkybyCLR1m8XkrOUvsJGA",
// 版本号
"version": {
// // 索引的创建版本号
"created": "7172599"
}
}
}
}
}
查看所有索引信息
输入如下地址 如图3所示 get请求
http://127.0.0.1:9200/_cat/indices?v
删除索引信息
输入如下地址 如图4所示 delete请求 后面的test是索引的名称
http://127.0.0.1:9200/test
2
文档创建




12
指定id创建文档数据
如图1所示 输入以下地址 后面的1是索引名称 用put请求
http://127.0.0.1:9200/test/_doc/1
不指定id创建文档数据
如图2所示输入以下网址 用post请求
http://127.0.0.1:9200/test/_doc
返回结果
{
// 索引的名称
"_index": "test",
// 代表是文档类型
"_type": "_doc",
// id 如果指定了就是指定的id 没指定就是自动生成的
"_id": "3fbPvpMBHnIVK4n29uTz",
// 版本号,每一次对文档进行修改都会增加版本号
"_version": 1,
// 结果 这里的 created 表示创建成功
"result": "created",
// 分片信息
"_shards": {
// 总数2
"total": 2,
// 分片成功1
"successful": 1,
// 分片失败0
"failed": 0
},
// 代表文档的序列号,用于确保文档的旧版本不会覆盖新版本 类似于雪花算法
"_seq_no": 1,
// _primary_term也和_seq_no一样是一个整数,每当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1
"_primary_term": 1
}
3
基本查询文档数据信息




12
根据id查询文档输入
输入以下网址 设置为get请求 后面的1代表id号 如图1所示
http://127.0.0.1:9200/test/_doc/1
返回值 :
{
// 索引库名称
"_index": "test",
// 类型 代表文档类型
"_type": "_doc",
// 主键id
"_id": "1",
// 版本号
"_version": 1,
// 代表文档的序列号,用于确保文档的旧版本不会覆盖新版本 类似于雪花算法
"_seq_no": 0,
// _primary_term也和_seq_no一样是一个整数,每当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1
"_primary_term": 1,
// 是否存在
"found": true,
// 查询出来的数据 源文档信息
"_source": {
"name": "张三",
"age": 18,
"address": "北京省,北京市,海淀区,无名小区,测试21-2"
}
}
查询某个索引下面全部的文档数据
输入以下网址 get请求 如图2所示
http://127.0.0.1:9200/test/_doc/_search
返回结果
{
// 请求花费了多长时间
"took": 3,
// 是否超时
"timed_out": false,
// 执行请求时查询的分片信息
"_shards": {
// 总片数
"total": 1,
// 成功返回结果的分片数量
"successful": 1,
// 没有搜索/跳过的分片数量
"skipped": 0,
// 失败的分片数量
"failed": 0
},
// 搜索命中结果
"hits": {
// 总条数
"total": {
"value": 2,
"relation": "eq"
},
// 计算所得的最高分
"max_score": 1.0,
// 结果数据集合
"hits": [
{
// 索引名称
"_index": "test",
// 文档类型
"_type": "_doc",
// id
"_id": "1",
// 匹配分数
"_score": 1.0,
// 内容
"_source": {
"name": "张三",
"age": 18,
"address": "北京省,北京市,海淀区,无名小区,测试21-2"
}
},
{
"_index": "test",
"_type": "_doc",
"_id": "3fbPvpMBHnIVK4n29uTz",
"_score": 1.0,
"_source": {
"name": "王九",
"age": 34,
"address": "北京省,北京市,海淀区,无名小区,测试21-2"
}
}
]
}
}
4
修改文档数据




12
根据id全量修改文档数据
如图1所示 输入以下网址 设置为put 请求 ,json 设置为要修改的数据 后面的1是id
http://127.0.0.1:9200/test/_doc/1
根据id局部修改文档数据
如图2所示 输入以下网址 设置为put 请求 ,json 设置为要修改的数据 后面的1是id
http://127.0.0.1:9200/test/_update/1
返回值解释:
{
// 索引名称
"_index": "test",
// 文档类型
"_type": "_doc",
// id
"_id": "1",
// 版本号
"_version": 3,
// 代表是修改
"result": "updated",
// 执行请求时查询的分片信息
"_shards": {
// 分片数
"total": 2,
// 成功数1
"successful": 1,
// 失败0
"failed": 0
},
// 代表文档的序列号,用于确保文档的旧版本不会覆盖新版本 类似于雪花算法
"_seq_no": 3,
// _primary_term也和_seq_no一样是一个整数,每当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1
"_primary_term": 1
}
5
删除文档数据

如图所示输入以下网址 设置为delete请求
http://127.0.0.1:9200/test/_doc/1
返回结果
{
// 索引名称
"_index": "test",
// 文档类型
"_type": "_doc",
// id号
"_id": "1",
// 版本号
"_version": 4,
// deleted,数据被删除。如果删除不存在的问题,result:not_found
"result": "deleted",
// 执行请求时查询的分片信息
"_shards": {
// 分片数
"total": 2,
// 成功数1
"successful": 1,
// 失败0
"failed": 0
},
// 代表文档的序列号,用于确保文档的旧版本不会覆盖新版本 类似于雪花算法
"_seq_no": 4,
// _primary_term也和_seq_no一样是一个整数,每当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1
"_primary_term": 1
}
6
条件查询文档数据

设置为get 请求 输入以下网址 和json json内容大家自行参考 如图1所示 下面也给大家列举出来了几个常用的json
网址:
http://127.0.0.1:9200/test/_doc/_search
json:匹配搜索
{
// 查询
"query":{
// 匹配查询
"match":{
// 匹配的字段以及内容
"address":"朝阳测试"
}
}
}
分页&排序&指定字段查询
{
// 查询
"query":{
// 全量查询 代表查询全部
"match_all":{
}
},
// 当前页数据的起始位置 --第一条的位置
"from": 0,
// 每页查询多少个
"size":20,
// 查询哪些字段
"_source":["name","age"],
// 排序操作
"sort":{
// 哪个字段进行排序
"age":{
// asc升序 desc降序
"order":"desc"
}
}
}
完全匹配 和 高亮查询
{
// 查询参数
"query":{
// 代表完全匹配 不说分词匹配
"match_phrase":{
"name":"张三"
}
},
// 高亮查询
"highlight":{
"fields":{
// 高亮的字段
"name":{
}
}
}
}










更多相关项目
猜你喜欢
评论/提问(已发布 0 条)

