文章目录- 1. mget 批量查询
- 2. bulk 批量写入
- 3. 条件删除
- 4. 条件更新
- 5. 映射 mappings
- 6. 自动映射
- 7. 显式映射
1. mget 批量查询
- 批量查询
GET _mget
{
"docs": [
{
"_index": "test_index",
"_id": 1
},
{
"_index": "kibana_sample_data_flights",
"_id": "frc8U4UBIo5EnYllKV0t"
}
]
}
输出
代码语言:javascript复制{
"docs": [
{
"_index": "test_index",
"_id": "1",
"_version": 3,
"_seq_no": 11,
"_primary_term": 1,
"found": true,
"_source": {
"name": "test_new",
"value": 100,
"alisa": "名称"
}
},
{
"_index": "kibana_sample_data_flights",
"_id": "frc8U4UBIo5EnYllKV0t",
"_version": 1,
"_seq_no": 8373,
"_primary_term": 1,
"found": true,
"_source": {
"FlightNum": "5EKI6QP",
"DestCountry": "CN",
"OriginWeather": "Rain",
"OriginCityName": "London",
"AvgTicketPrice": 1028.3575673252506,
"DistanceMiles": 5761.935055291024,
"FlightDelay": true,
"DestWeather": "Sunny",
"Dest": "Shanghai Pudong International Airport",
"FlightDelayType": "Late Aircraft Delay",
"OriginCountry": "GB",
"dayOfWeek": 5,
"DistanceKilometers": 9272.935609622278,
"timestamp": "2023-01-14T19:36:28",
"DestLocation": {
"lat": "31.14340019",
"lon": "121.8050003"
},
"DestAirportID": "PVG",
"Carrier": "JetBeats",
"Cancelled": false,
"FlightTimeMin": 902.3525435444484,
"Origin": "London Gatwick Airport",
"OriginLocation": {
"lat": "51.14810181",
"lon": "-0.190277994"
},
"DestRegion": "SE-BD",
"OriginAirportID": "LGW",
"OriginRegion": "GB-ENG",
"DestCityName": "Shanghai",
"FlightTimeHour": 15.03920905907414,
"FlightDelayMin": 240
}
}
]
}
- 同 一个 index 可以简写
GET test_index/_mget
{
"docs": [
{
"_id": 1
},
{
"_id": 2
}
]
}
or
代码语言:javascript复制GET test_index/_mget
{
"ids": [
1,
2
]
}
2. bulk 批量写入
写入一条
代码语言:javascript复制POST _bulk
{"create":{"_index":"test_index","_id":3}} # action, create 可以改成 index(替换doc)
{"name":"test_new1","value":[1,2,3]} # data 这两行不能分在多行
写入多条,注意 create、index 的区别
代码语言:javascript复制POST _bulk
{"create":{"_index":"test_index","_id":3}}
{"name":"test_new3","value":[1,2,3]}
{"create":{"_index":"test_index","_id":4}}
{"name":"test_new4","value":4}
{"index":{"_index":"test_index","_id":5}}
{"name":"test_new5","value":5}
or 同一index可简写
代码语言:javascript复制POST test_index/_bulk
{"create":{"_id":3}}
{"name":"test_new3","value":[1,2,3]}
{"create":{"_id":4}}
{"name":"test_new4","value":4}
{"index":{"_id":5}}
{"name":"test_new5","value":5}
代码语言:javascript复制{
"took": 168,
"errors": true,
"items": [
{
"create": {
"_index": "test_index",
"_id": "3", # 已经存在,create 报错
"status": 409,
"error": {
"type": "version_conflict_engine_exception",
"reason": "[3]: version conflict, document already exists (current version [2])",
"index_uuid": "ntM1X5SOTxiz8tRVwdHK6g",
"shard": "0",
"index": "test_index"
}
}
},
{
"create": {
"_index": "test_index",
"_id": "4",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 15,
"_primary_term": 1,
"status": 201
}
},
{
"index": {
"_index": "test_index",
"_id": "5",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 16,
"_primary_term": 1,
"status": 201
}
}
]
}
update 更新
代码语言:javascript复制POST _bulk
{"update":{"_index":"test_index","_id":3}}
{"doc":{"value":3}}
{"update":{"_index":"test_index","_id":4}}
{"doc":{"name":"test_new44"}}
{"update":{"_index":"test_index","_id":5}}
{"doc":{"name":"test_new55","value":55}}
or 简写
代码语言:javascript复制POST test_index/_bulk
{"update":{"_id":3}}
{"doc":{"value":3}}
{"update":{"_id":4}}
{"doc":{"name":"test_new44"}}
{"update":{"_id":5}}
{"doc":{"name":"test_new55","value":55}}
delete 删除
代码语言:javascript复制POST _bulk
{"delete": {"_index": "test_index", "_id": 3}}
{"delete": {"_index": "test_index", "_id": 4}}
or
代码语言:javascript复制POST test_index/_bulk
{"delete": {"_id": 5}}
{"delete": {"_id": "ZLcgV4UBIo5EnYlljo2Q"}}
3. 条件删除
代码语言:javascript复制POST test_index/_delete_by_query
{
"query": {
"term": {
"value": 100
}
}
}
输出
代码语言:javascript复制{
"took": 297,
"timed_out": false,
"total": 1,
"deleted": 1,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1,
"throttled_until_millis": 0,
"failures": []
}
检查 value = 100 的 doc 已被删除
代码语言:javascript复制GET test_index/_search
4. 条件更新
代码语言:javascript复制POST test_index/_update_by_query
{
"query": {
"term": {
"value": 99
}
},
"script": {
"source": "ctx._source['value'] = 199"
}
}
更新 query 条件下(value=99)的 doc,将其 value 改为 199
输出
代码语言:javascript复制{
"took": 307,
"timed_out": false,
"total": 1,
"updated": 1,
"deleted": 0,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1,
"throttled_until_millis": 0,
"failures": []
}
5. 映射 mappings
查询映射
代码语言:javascript复制GET test_index/_mapping
输出
代码语言:javascript复制{
"test_index": {
"mappings": {
"properties": {
"alisa": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"value": {
"type": "long"
}
}
}
}
}
查看单个字段的属性
代码语言:javascript复制GET test_index/_mapping/field/value
输出
代码语言:javascript复制{
"test_index": {
"mappings": {
"value": {
"full_name": "value",
"mapping": {
"value": {
"type": "long"
}
}
}
}
}
}
6. 自动映射
dynamic mappings 建立 index 的时候没有设置 mapping,根据你的 value 自动推断类型
ES 不支持修改字段类型、没有隐式转换(比如 “123” 不会当成 数字 123)、建议指定 mapping
7. 显式映射
代码语言:javascript复制PUT test_index1
{
"mappings": {
"properties": {
"price": {
"type": "float"
},
"name": {
"type": "keyword"
},
"desc": {
"type": "text"
}
}
}
}
查看 mapping
代码语言:javascript复制GET test_index1/_mapping
数据类型 见 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html
映射参数 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-params.html
- coerce,是否允许强制类型转换
- copy_to,把字段的值 copy 到对应字段中,不可见,但是可查
- doc_values,设置为 false ,不能对该字段进行排序,聚合查询,可以减少磁盘占用
- enable,index 是否被索引,或者 object 字段是否被索引
- ignore_above,对超过长度的字段,搜索时无法搜索到
- index,字段是否可以被索引
- fields,可以创建多个子字段
- norms,是否禁用评分(评分可用来排序)
- store,加速查询 store 过的字段