二、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":"[email protected]",
    "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":"[email protected]",
  "name":{
    "firstName":"Jack",
    "lastName":"hh"
  }
}

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

修改

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

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

GET /hhyy/_doc/2

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

下一篇:三、RestClient(writing)

相关推荐
ICT_SOLIDWORKS2 分钟前
智诚科技苏州SOLIDWORKS授权代理商的卓越之选
大数据·人工智能·科技·软件工程
24k小善42 分钟前
FlinkUpsertKafka深度解析
java·大数据·flink·云计算
Elasticsearch1 小时前
Elastic Observability 9.0/8.18:EDOT 现已正式发布,支持 LLM observability ,以及更多功能
elasticsearch
caihuayuan42 小时前
【docker&redis】用docker容器运行单机redis
java·大数据·sql·spring·课程设计
Gvemis⁹2 小时前
Spark总结
大数据·分布式·spark
灵途科技3 小时前
NEPCON China 2025 | 具身智能时代来临,灵途科技助力人形机器人“感知升级”
大数据·人工智能
sky.fly4 小时前
思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)
大数据·网络·智能路由器
阿里云大数据AI技术4 小时前
演讲实录:中小企业如何快速构建AI应用?
大数据·人工智能·云计算
凉白开3385 小时前
spark总结
大数据·分布式·spark
等雨季5 小时前
Spark总结
大数据·分布式·spark