二、ElasticSearch中索引库与文档操作

文章目录

  • 二、索引库与文档
    • [2.1 `mapping`映射属性](#2.1 mapping映射属性)
    • [2.2 操作索引库](#2.2 操作索引库)
    • [2.3 文档操作](#2.3 文档操作)

二、索引库与文档

2.1 mapping映射属性

  • mapping映射属性

官方网址:https://www.elastic.co/guide/en/elasticsearch/reference/7.12/dynamic-mapping.html

mapping 是对索引库中文档的约束,常见的mapping属性包括

  • type: 字段数据类型,常见的简单类型有:
    • 字符串: text (可分词的文本);keyword (精确值,例如: 品牌、国家、ip地址)。如下:email字段就是不可拆分字段。info属于可拆分字段。
    • 数值: long、integer、short、byte、double、float、
    • 布尔: boolean
    • 日期: date
    • 对象: object
  • index:是否创建索引,默认为true
  • analyzer:使用哪种分词器
  • properties:该字段的子字段
json 复制代码
{
    "age": 21,
    "weight": 52.1,
    "info":"我们在学ES",
    "isMarried": false,
    "email":"zy@itcast.cn",
    "score": [99.1,99.5,98.9],
    "name":{
		"firstName":"云",
        "LastName":"赵"
    }
}

2.2 操作索引库

ES中通过Restful请求操作索引库、文档。请求内容用DSL语句来表示。创建索引库和mappingDSL语法如下:

json 复制代码
PUT /索引库名称
"mappings": {
    "properties": {
        "字段名":{
            "type":"text",
            "analyzer":"ik_smart"
        }
		"字段名2":{
        	"type":"keyword",
        	"index":"false"
    	}
		"字段名3":{
    		"properties": {
    			"子字段": {"type":"keyword"}
			}
		}
	},
	// 略
}

索引库的CRUD

json 复制代码
# 创建索引库
PUT /hhyy
{
  "mappings": {
    "properties": {
      "info":{
        "type":"text",
        "analyzer": "ik_smart"
      },
      "email":{
        "type": "keyword",
        "index": false
      },
      "name":{
        "type": "object",
        "properties": {
          "firstName":{
            "type":"keyword"
          },
          "lastName":{
            "type":"keyword"
          }
        }
      }
    }
  }
}
json 复制代码
# 创建
PUT /hhyy
# 删除
DELETE /hhyy
# 查询
GET /hhyy

# 修改[添加新字段],只能添加,不能更新
# 更新索引过于消耗资源
PUT /hhyy/_mapping
{
  "properties":{
    "age":{
      "type":"integer"
    }
  }
}

2.3 文档操作

  • 添加文档

新增文档的DSL语法如下:

json 复制代码
POST /索引库名/_doc/文档id
{
  "字段1":"值1",
  "字段2":"值2",
  "字段3":{
    "子属性1":"值3",
    "子属性2":"值4"
  },
}		

示例:

json 复制代码
# 插入文档
POST /hhyy/_doc/1
{
  "info":"我们学习ES",
  "email":"hhh@out.com",
  "name":{
    "firstName":"Jack",
    "lastName":"hh"
  }
}

# 获取
GET /hhyy/_doc/1
# 删除
DELETE /hhyy/_doc/1

修改

json 复制代码
# 修改文档
# 全量修改,会删除旧文档,添加新文档
# 若id存在就修改,不存在就新增
PUT /hhyy/_doc/2
{
  "info":"我们学习ES1111",
  "email":"hhh@out.com",
  "name":{
    "firstName":"Jack",
    "lastName":"hh"
  }
}
GET /hhyy/_doc/2

# 增量修改,
POST /hhyy/_update/2
{
  "doc":{
    "info":"我们都要努力学习ES"
  }
}

GET /hhyy/_doc/2

上一篇:一、初识 Elasticsearch:概念,安装,设置分词器

下一篇:三、RestClient(writing)

相关推荐
武子康7 小时前
大数据-237 离线数仓 - Hive 广告业务实战:ODS→DWD 事件解析、广告明细与转化分析落地
大数据·后端·apache hive
大大大大晴天8 小时前
Flink生产问题排障-Kryo serializer scala extensions are not available
大数据·flink
Elasticsearch1 天前
如何使用 Agent Builder 排查 Kubernetes Pod 重启和 OOMKilled 事件
elasticsearch
Elasticsearch2 天前
通用表达式语言 ( CEL ): CEL 输入如何改进 Elastic Agent 集成中的数据收集
elasticsearch
武子康2 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康3 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP4 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库4 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟4 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法