• 云途科技成立于2010年 - 专注全球跨境电商服务器租赁托管!
  • 帮助中心

    您可以通过下方搜索框快速查找您想知道的问题

    elasticsearch 数据 添加,更新,删除,查询

      in  unix      Tags: 

    上篇文章说了,elasticsearch mapping字段的增,删,更新。如果把mapping的修改理解成对数据结构的修改,那这篇文章就可以理解成对数据的修改。

    1,添加数据

    $ curl -XPOST "http://127.0.0.1:9200/ik_v2/chinese/3?pretty"  -H "Content-Type: application/json" -d '
    {
        "id" : 3,
        "username" :  "测试测试",
        "description" :  "测试测试"
    }'
    

    2,更新数据

    2.1,部分数据更新

    $ curl -XPOST 'localhost:9200/ik_v2/chinese/3/_update?pretty' -H "Content-Type: application/json" -d '{
        "doc" : {
                "username" : "testtest"
            }
        }
    }'
    
    $ curl -XGET "http://127.0.0.1:9200/ik_v2/chinese/3?pretty"
    {
      "_index" : "ik_v2",
      "_type" : "chinese",
      "_id" : "3",
      "_version" : 1,
      "found" : true,
      "_source" : {
        "id" : 3,
        "username" : "testtest",  //部分更新了
        "description" : "测试测试"
      }
    }
    

    2.2,全部更新

    curl -XPOST "http://127.0.0.1:9200/ik_v2/chinese/3?pretty"  -H "Content-Type: application/json" -d '
    {
        "id" : 4,
        "username" :  "111111111",
        "description" :  "222222222"
    }'
    
    //id为3的数据全部更新了
    $ curl -XGET "http://127.0.0.1:9200/ik_v2/chinese/3?pretty"
    {
      "_index" : "ik_v2",
      "_type" : "chinese",
      "_id" : "3",
      "_version" : 1,
      "found" : true,
      "_source" : {
        "id" : 4,
        "username" : "111111111",
        "description" : "222222222"
      }
    }
    

    2.3,拼接更新

    $ curl -XPOST 'localhost:9200/ik_v2/chinese/3/_update?pretty' -H "Content-Type: application/json" -d '{
        "script" : {
            "inline" : "ctx._source.description += params.content", //因为description是string型,所以是拼
            "params" : {
                "content" : 333
            }
        }
    }'
    
    $ curl -XPOST 'localhost:9200/ik_v2/chinese/3/_update?pretty' -H "Content-Type: application/json" -d '{
        "script" : {
            "inline" : "ctx._source.id += params.num",   //因为id是int型,所以是加
            "params" : {
                "num" : 2
            }
        }
    }'
    
    $ curl -XGET "http://127.0.0.1:9200/ik_v2/chinese/3?pretty"
    {
      "_index" : "ik_v2",
      "_type" : "chinese",
      "_id" : "3",
      "_version" : 3,
      "found" : true,
      "_source" : {
        "id" : 6,   //加了2
        "username" : "111111111",
        "description" : "222222222333"   //拼了333
      }
    }
    

    2.4,添加字段,并更新数据

    //添加一个字段为sex值为1
    $ curl -XPOST 'localhost:9200/ik_v2/chinese/3/_update?pretty' -H "Content-Type: application/json" -d '{
     "script" : "ctx._source.sex = 1"
    }'
    
    //删除sex这个字段
    $ curl -XPOST 'localhost:9200/ik_v2/chinese/3/_update?pretty' -H "Content-Type: application/json" -d '{
     "script" : "ctx._source.remove(\"sex\")"
    }'

    在这里要注意,用这个方法,mapping结构会改变。

    注:以上的更新操作都是单条数据更新

    2.5,多条数据更新

    $ curl -XPOST 'localhost:9200/ik_v2/test/_update_by_query?pretty' -H "Content-Type: application/json" -d '{
    >  "query": {
    >         "bool": {
    >             "should": {
    >                 "match": {
    >                     "username": "高铁"
    >                 }
    >             }
    >         }
    >     },
    >     "script" : {
    >         "inline" : "ctx._source.username = \"666666\""
    >     }
    > }'
    {
      "took" : 6,
      "timed_out" : false,
      "total" : 3,
      "updated" : 2,  //更新了二条
      "deleted" : 0,
      "batches" : 1,
      "version_conflicts" : 0,
      "noops" : 0,
      "retries" : {
        "bulk" : 0,
        "search" : 0
      },
      "throttled_millis" : 0,
      "requests_per_second" : -1.0,
      "throttled_until_millis" : 0,
      "failures" : [ ]
    }
    

    注意,这个条件字段,最好不要用分词字段,因为不可控。上面我只是为了测试用。

    3,删除数据

    3.1,单条删除

    $ curl -XDELETE "http://127.0.0.1:9200/ik_v2/chinese/3?pretty"

    3.2,多条数据删除

    $ curl -XPOST 'http://127.0.0.1:9200/ik_v2/_delete_by_query?pretty' -H "Content-Type: application/json" -d '{
    > "query": {
    >         "term": {
    >             "username": "666666"
    >         }
    >     }
    > }'
    {
      "took" : 6,
      "timed_out" : false,
      "total" : 3,
      "deleted" : 2,  //删除了二条
      "batches" : 1,
      "version_conflicts" : 0,
      "noops" : 0,
      "retries" : {
        "bulk" : 0,
        "search" : 0
      },
      "throttled_millis" : 0,
      "requests_per_second" : -1.0,
      "throttled_until_millis" : 0,
      "failures" : [ ]
    }
    

    注意,这个条件字段,最好不要用分词字段,因为不可控。

    4,查询

    $ curl -XPOST "http://127.0.0.1:9200/ik,ik_v2/chinese/_search?pretty"  -H "Content-Type: application/json"  -d '
    {
        "query": {
            "multi_match": {
                "query": "中国高铁",
                "fields": [ "username", "description"]
            }
        }
    }
    '
    

    查询的操作,非常多,后面会单独的详细说。查询总的来说,支持多索引多字段查询。新版es不支持一个索引多个mapping,老版还支持多mapping查询。



    • 外贸虚拟主机

      1GB硬盘

      2个独立站点

      1000M带宽

      不限制流量

      美国外贸专用虚拟主机,cPanel面板,每天远程备份.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥180/年

    • 美国/荷兰外贸VPS

      2核CPU

      1G内存

      30硬盘

      10M带宽

      美国/荷兰外贸云服务器,专注外贸服务器行业12年.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥99/月

    • 全球外贸服务器

      8核CPU

      32G内存

      1TB硬盘

      1000M带宽

      已部署数据中心:美国洛杉矶/亚特兰大、荷兰、加拿大、英国伦敦、德国、拉脱维亚、瑞典、爱沙尼亚
      自有机柜(全球九大数据中心),稳定在线率:99.9%

      ¥999/月 原价1380

    7*24小时 在线提交工单

    如果您的问题没有得到解决,推荐您在线提交工单,我们的客服人员会第一时间为您解决问题

    展开