中文文档:

https://www.elastic.co/guide/cn/elasticsearch/guide/current/getting-started.html

查看健康状态

curl -X GET 127.0.0.1:9200/_cat/health?v

查询当前es集群中所有的indices

curl -X GET 127.0.0.1:9200/_cat/indices?v

推荐使用Kibana进行DSL编写,有代码提示与纠正(提示给跟我一样的小白)

创建索引并配置:

number_of_shards为数据分片,默认值为5

number_of_replicas为数据备份数,如果只有一台机器,建议设置为0,避免索引一直处于yellow状态

注:该设置创建索引后无法修改(我记得是这样,有错望纠正)

PUT /index_name/_settings
{
"number_of_shards": 3,
"number_of_replicas": 0
}

定义字段的类型

text:文本类型(会被es分词器进行分词)可以保存字符串也可以保存数组
keyword:文本类型(不被分词) 可以保存字符串也可以保存数组
scaled_float:浮点型数据类型,scaling_factor用于精度限制
date:时间类型,可用format约束时间格式(epoch_millis为时间戳)

例子:

查看mapping

PUT /index_name/_doc/_mapping?pretty

{
"_doc":{
"properties":{
"my_id":{
"type":"long"
},
"content":{
"type":"text"
},
"money":{
"type":"scaled_float",
"scaling_factor":100
},
"customer":{
"type":"keyword"
},
"sync":{
"type":"boolean"
},
"create_time":{
"type":"date",
"format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
}

保存数组

textkeywor 类型可以保存字符串也可以保存数组

"properties": {
"fofa_rules": {
"type": "keyword"
}

创建mapping

curl -H "Content-Type:application/json" -X PUT 127.0.0.1:9200/user1 -d '
{
"mappings":{
"person":{
"properties":{
"address":{
"type":"text",
"fields":{
"keyword":{
"ignore_above":2048,
"type":"keyword"
}
}
},
"name":{
"type":"text",
"fields":{
"keyword":{
"ignore_above":256,
"type":"keyword"
}
}
}
}
}
}
}' | jq .

存字符串

修改值为字符串

curl -H "Content-Type:application/json" -X POST 127.0.0.1:9200/user/person/1/_update -d'
{
"doc":{
"name":"lisi",
"address":"北京"
}
}'

curl -X GET 127.0.0.1:9200/user/person/_search?q=_id:1 | jq .

查询结果:

{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "user",
"_type": "person",
"_id": "1",
"_score": 1,
"_source": {
"name": "lisi",
"age": 9,
"married": false,
"address": "北京"
}
}
]
}
}

存数组

修改值为数组

curl -H "Content-Type:application/json" -X POST 127.0.0.1:9200/user/person/1/_update -d'
{
"doc":{
"name":["lisi","wangwu"],
"address":["安徽","北京"]
}
}'

curl -X GET 127.0.0.1:9200/user/person/_search?q=_id:1 | jq .

查询结果

{
"took": 10,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "user",
"_type": "person",
"_id": "1",
"_score": 1,
"_source": {
"name": [
"lisi",
"wangwu"
],
"age": 9,
"married": false,
"address": [
"安徽",
"北京"
]
}
}
]
}
}

创建索引

curl -X PUT 127.0.0.1:9200/www

删除索引

curl -X DELETE 127.0.0.1:9200/www

获取mapping

curl -X GET 127.0.0.1:9200/user/_mapping?pretty

返回参数

{
"user" : {
"mappings" : {
"person" : {
"properties" : {
"age" : {
"type" : "long"
},
"married" : {
"type" : "boolean"
},
"name" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"query" : {
"properties" : {
"match" : {
"properties" : {
"name" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
}
}
}
}
}
}
}
}

创建mapping

注意:

  1. 这里只要上面获取mapping返回值里的mapping值
  2. 要创建的索引必需不存在
curl -H "Content-Type:application/json" -X PUT 127.0.0.1:9200/user -d '
{
"mappings":{
"person":{
"properties":{
"age":{
"type":"long"
},
"married":{
"type":"boolean"
},
"name":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
}
}
}' | jq .

添加字段

user引索的person类型添加字段

curl -H "Content-Type:application/json" -X PUT 127.0.0.1:9200/user/_mapping/person -d '
{
"properties":{
"created_at":{
"format":"YYYY-MM-dd HH:mm:ss",
"type":"date"
},
"it":{
"type":"boolean"
},
"is_scan":{
"type":"long"
},
"address":{
"type":"text",
"fields":{
"keyword":{
"ignore_above":256,
"type":"keyword"
}
}
}
}
}'

设置默认值

参考下面文档

https://blog.csdn.net/huangzhen__/article/details/104769018?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-1-104769018.pc_agg_new_rank&utm_term=Mapping%E8%AE%BE%E7%BD%AE%E9%BB%98%E8%AE%A4%E5%80%BC&spm=1000.2123.3001.4430

插入记录

post的方式,会自动生成id

curl -H "Content-Type:application/json" -X POST 127.0.0.1:9200/user/person -d '
{
"name": "dsb",
"age": 9000,
"married": true
}'

输出:

{
"_index":"user",
"_type":"person",
"_id":"55GiOH4BfTVguARX3JmZ",
"_version":1,
"result":"created",
"_shards":{
"total":2,
"successful":1,
"failed":0
},
"_seq_no":0,
"_primary_term":1
}

也可以使用PUT方法,但是需要传入id

curl -H "Content-Type:application/json" -X PUT 127.0.0.1:9200/user/person/4 -d '
{
"name": "sb",
"age": 9,
"married": false
}'

检索

Elasticsearch的检索语法比较特别,使用GET方法携带JSON格式的查询条件。

以下带 | jq .需要安装jq这是格式化json显示

全检索:

curl -X GET 127.0.0.1:9200/user/person/_search | jq .

输出结果:

{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1,
"hits": [
{
"_index": "user",
"_type": "person",
"_id": "55GiOH4BfTVguARX3JmZ",
"_score": 1,
"_source": {
"name": "dsb",
"age": 9000,
"married": true
}
},
{
"_index": "user",
"_type": "person",
"_id": "4",
"_score": 1,
"_source": {
"name": "sb",
"age": 9,
"married": false
}
}
]
}
}

按条件检索:

get查询

curl -X GET 127.0.0.1:9200/user/person/1 | jq .

查询结果:

{
"_index": "user",
"_type": "person",
"_id": "1",
"_version": 4,
"found": true,
"_source": {
"name": "lisi",
"age": 9,
"married": false,
"address": "北京"
}
}

name=sb的记录

curl -X GET 127.0.0.1:9200/user/person/_search?q=name:sb | jq .

返回参数:

{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.2876821,
"hits": [
{
"_index": "user",
"_type": "person",
"_id": "1",
"_score": 0.2876821,
"_source": {
"name": "sb",
"age": 9,
"married": false
}
}
]
}
}

age=9的记录

curl -X GET 127.0.0.1:9200/user/person/_search?q=age:9 | jq .

post查询

curl -H "Content-Type:application/json" -X POST 127.0.0.1:9200/user/person/_search -d '
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "sb"
}
}
]
}
}
}' | jq .

输出结果:

{
"took": 4,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.6931472,
"hits": [
{
"_index": "user",
"_type": "person",
"_id": "4",
"_score": 0.6931472,
"_source": {
"name": "sb",
"age": 9,
"married": false
}
}
]
}
}

更多条件

curl -H "Content-Type:application/json" -X POST 127.0.0.1:9200/user/person/_search -d '
{
"query": {
"bool": {
"must": [
{
"range": {
"age": {
"gt": "10"
}
}
}
]
}
},
"from": 0,
"size": 10,
"sort": {
"age": {
"order": "desc"
}
},
"aggs": {}
}' | jq .

返回结果:

{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": null,
"hits": [
{
"_index": "user",
"_type": "person",
"_id": "55GiOH4BfTVguARX3JmZ",
"_score": null,
"_source": {
"name": "dsb",
"age": 9000,
"married": true
},
"sort": [
9000
]
},
{
"_index": "user",
"_type": "person",
"_id": "0ZHGOH4BfTVguARXXZoF",
"_score": null,
"_source": {
"name": "sbs",
"age": 6000,
"married": true
},
"sort": [
6000
]
}
]
}
}

修改

指定id修改

curl -H "Content-Type:application/json" -X POST 127.0.0.1:9200/user/person/4/_update -d'
{
"doc":{
"name":"11"
}
}'

返回结果:

{
"_index":"user",
"_type":"person",
"_id":"4",
"_version":2,
"result":"updated",
"_shards":{
"total":2,
"successful":1,
"failed":0
},
"_seq_no":2,
"_primary_term":1
}

按条件修改

把所有age>1的所有记录的married修改为true

curl -H "Content-Type:application/json" -X POST 127.0.0.1:9200/user/person/_update_by_query -d'
{
"script":{
"source":"ctx._source.married=params.married",
"params":{
"married":true
}
},
"query":{
"bool":{
"must":[
{
"range":{
"age":{
"gt":"1"
}
}
}
]
}
}
}'

把所有age>1的所有记录的age修改为12

curl -H "Content-Type:application/json" -X POST 127.0.0.1:9200/user/person/_update_by_query -d'
{
"script":{
"source":"ctx._source.age=12"
},
"query":{
"bool":{
"must":[
{
"range":{
"age":{
"gt":"1"
}
}
}
]
}
}
}'

把所有name=sbs的所有记录的age修改为38

{
"script":{
"source":"ctx._source.age=38"
},
"query":{
"bool":{
"must":[
{
"match":{
"name":"sbs"
}
}
]
}
}
}

删除

删除指定id的记录

curl -H "Content-Type:application/json" -X DELETE 127.0.0.1:9200/user/person/4

按条件删除

curl -H "Content-Type:application/json" -X POST 127.0.0.1:9200/user/person/_delete_by_query -d'
{
"query":{
"bool":{
"must":[
{
"match":{
"name":"sb"
}
}
]
}
}
}'

删除所有数据

# user和product索引里类型为_doc的删除所有数据
curl -H "Content-Type:application/json" -X POST 127.0.0.1:9200/user,product/_doc/_delete_by_query -d'
{
"query":{
"bool":{
"must":[
{
"match_all":{ }
}
]
}
}
}'

06 curl 操作elasticsearch的CRUD的更多相关文章

  1. Curl操作Elasticsearch的常用方法

    Elasticsearch对于文档操作,提供了以下几种API,本文就说明如何使用curl方式来调用这些API. API种类 单文档操作API 1.* Index API 索引文档 * 为文档创建索引 ...

  2. elasticsearch(5) curl 操作elasticsearch

    创建索引之前可以对索引做初始化操作, 比如指定shards数量以及replicas的数量.     library为索引的名称 CURL -XPUT 'http://192.168.1.10:9200 ...

  3. window下使用curl操作elasticsearch

    1.下载curlzip,https://curl.haxx.se/download.html; 2.解压,在bin文件夹中找到curl.exe,右键“以管理员身份运行”,cmd e: 换盘符:出现E: ...

  4. 使用Sense操作ElasticSearch CRUD

    安装完成之后,我们该开始学习关于ElasticSearch最基本的CURD操作了. ElasticSearch作为一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,其接口也 ...

  5. ElasticSearch第二步-CRUD之Sense

    ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticSea ...

  6. 使用curl命令操作elasticsearch

    使用curl命令操作elasticsearch 大岩不灿 发表于 2015年4月25日 浏览 7,426 次 第一:_cat系列_cat系列提供了一系列查询elasticsearch集群状态的接口.你 ...

  7. 学习用Node.js和Elasticsearch构建搜索引擎(3):使用curl命令操作elasticsearch

    使用Elasticsearch不免要提到curl工具,curl是利用URL语法在命令行方式下工作的开源文件传输工具.官网地址:https://curl.haxx.se/ 因为elasticsearch ...

  8. ElasticSearch之CURL操作(有空再去整理)

    https://www.cnblogs.com/jing1617/p/8060421.html ElasticSearch之CURL操作 CURL的操作    curl是利用URL语法在命令行方式下工 ...

  9. Go操作Elasticsearch

    文章转自   Elasticsearch Elasticsearch 下载 https://www.elastic.co/cn/start 运行 解压后cd到解压目录 ./bin/elasticsea ...

  10. GO学习-(31) Go语言操作Elasticsearch

    Elasticsearch 本文简单介绍了ES.Kibana和Go语言操作ES. Elasticsearch 介绍 Elasticsearch(ES)是一个基于Lucene构建的开源.分布式.REST ...

随机推荐

  1. KingbaseES V8R6 sys_squeeze 使用

    sys_squeeze介绍 sys_squeeze是KingbaseES的一个扩展插件,该组件将提供人工调用命令实现对表dead tuple的清理工作.该组件在清理表空间的过程中,不会全程加排他锁,能 ...

  2. KingbaseES Clusterware 高可用案例之---构建iSCSI共享存储

    案例说明: 在KingbaseES Clusterware高可用的架构中,集群节点需要访问共享的存储设备,可以使用FC SAN.iscsi SAN.NAS等存储设备.本案例详细描述了,在Linux系统 ...

  3. Linux电脑如何下载QGIS?

      本文介绍在Linux操作系统Ubuntu版本中,通过命令行的方式,配置QGIS软件的方法.   在Ubuntu等Linux系统中,可以对空间信息加以可视化的遥感.GIS软件很少,比如ArcGIS下 ...

  4. Android按钮_单选框_多选框_文字框

    1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android= ...

  5. 从0开始学杂项 第四期:隐写分析(3) GIF 图片隐写

    Misc 学习(四) - 隐写分析:GIF 图片隐写 在上一期,我主要讲了讲自己对于隐写分析中的 PNG 图片隐写的一些浅薄理解,这一期我们继续对隐写分析的学习,学习的是图片隐写中的 GIF 图片隐写 ...

  6. OpenHarmony Camera源码分析

    一.简介 当前,开源在科技进步和产业发展中发挥着越来越重要的作用,OpenAtom OpenHarmony(简称"OpenHarmony")赋予了开发者孕育创新的种子,也为数字化产 ...

  7. Docker 学习路线 3:安装设置 Docker Desktop 与 Docker 引擎指南

    Docker提供了一个名为Docker Desktop的桌面应用程序,简化了安装和设置过程.还有另一个选项可以使用Docker引擎进行安装. Docker Desktop网站 Docker引擎 Doc ...

  8. 震撼!这个Python模块竟然能自动修复代码!

    说到Python的强大的地方,那真的是太多了,优雅.简洁.丰富且强大的第三方库.开发速度快,社区活跃度高等,所以才使得Python才会如此的受欢迎. 今天给大家介绍一个特别暴力的Python库: Fu ...

  9. 【FAQ】运动健康服务端侧数据常见问题及解答

    目录 Q1:Health Kit开放的API是否支持同时获取多个华为手环的健康数据? Q2:当前通过Health Kit获取运动健康数据的功能是否免费? Q3:在联盟平台申请Health Kit权限, ...

  10. HAProxy适配openGauss使用指导书

    一.HAProxy 简介 HAProxy 是一个开源的项目,其代码托管在 Github 上,代码链接如下:HAProxy 代码链接. HAProxy 提供高可用性.负载均衡以及基于 TCP 和 HTT ...