• elasticsearch中文档操作,索引导入数据、批量导入、删除文档


    向索引中增加数据(文档)
    POST /goods_info/_doc
    {
    	"name":"ThinkPad 联想 E14 11代i5/I7 2G独显 轻薄便携商务办公学生网课IBM笔记本电脑 i7-1165G7 32G内存 1T固态 定制 2G独显 WiFi6 FHD屏幕 雷电接口",
    	"detail":"ThinkPad 联想 E14 11代i5/I7 2G独显 轻薄便携商务办公学生网课IBM笔记本电脑 i7-1165G7 32G内存 1T固态 定制 2G独显 WiFi6 FHD屏幕 雷电接口",
    	"brand":"笔记本",
    	"price":"8299.00",
    	"sales_count":"1000",
    	"picture":"https://item.jd.com/10021516289831.html",
    	"click_url":"https://item.jd.com/10021516289831.html"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    这种方式添加索引后,索引id是由ES生成的,在返回结果中能看到,或者我们可以在增加数据的时候,手动指定文档ID:

    POST /goods_info/_doc/1
    {
    	"name":"ThinkPad 联想 E14 11代i5/I7 2G独显 轻薄便携商务办公学生网课IBM笔记本电脑 i7-1165G7 32G内存 1T固态 定制 2G独显 WiFi6 FHD屏幕 雷电接口",
    	"detail":"ThinkPad 联想 E14 11代i5/I7 2G独显 轻薄便携商务办公学生网课IBM笔记本电脑 i7-1165G7 32G内存 1T固态 定制 2G独显 WiFi6 FHD屏幕 雷电接口",
    	"brand":"笔记本",
    	"price":"8299.00",
    	"sales_count":"1000",
    	"picture":"https://item.jd.com/10021516289831.html",
    	"click_url":"https://item.jd.com/10021516289831.html"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    当我们指定了doc id之后,每次调用post方法对同一个doc id操作,doc的版本会增加,实现了更新文档

    获取文档信息
    GET /goods_info/_doc/1
    
    • 1
    删除文档
    DELETE /goods_info/_doc/1
    
    • 1
    获取所有文档
    GET /goods_info/_doc/_search
    
    • 1
    批量操作文档

    批量操作的请求体必须包含两个内容:

    • 操作方式
    • 具体数据
      所以一般都说批量操作数据必须是偶数行。
      第一行数据是定义操作类型及操作对象,第二行数据才是操作的数据
      比如:
    POST _bulk
    {"index":{"_index":"goods_info","_id":"1"}}
    {"name":"ThinkPad 联想 E14 11代i5/I7 2G独显 轻薄便携商务办公学生网课IBM笔记本电脑 i7-1165G7 32G内存 1T固态 定制 2G独显 WiFi6 FHD屏幕 雷电接口","detail":"ThinkPad 联想 E14 11代i5/I7 2G独显 轻薄便携商务办公学生网课IBM笔记本电脑 i7-1165G7 32G内存 1T固态 定制 2G独显 WiFi6 FHD屏幕 雷电接口","brand":"笔记本","price":"8299.00","sales_count":"1000","picture":"https://item.jd.com/10021516289831.html","click_url":"https://item.jd.com/10021516289831.html"}
    {"index":{"_index":"goods_info","_id":"2"}}
    {"name":"华为笔记本电脑MateBook D 14 2022款 14英寸 11代酷睿 i5 16G+512G 锐炬显卡 轻薄本/护眼全面屏 银","detail":"华为笔记本电脑MateBook D 14 2022款 14英寸 11代酷睿 i5 16G+512G 锐炬显卡 轻薄本/护眼全面屏 银","brand":"笔记本","price":"4799.00","sales_count":"10000","picture":"https://item.jd.com/100016960357.html","click_url":"https://item.jd.com/100016960357.html"}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里我们通过一次请求,添加了两条文档信息。

    所以一般批量处理的模式是:

    {"actionName":{"_index":"indexName", "_type":"typeName","_id":"id"}}
    {"field1":"value1", "field2":"value2"}
    
    • 1
    • 2

    这里的actinName主要包含如下五个:
    (1)create:create如果对应索引文档存在则会报错
    (2)index对应索引文档存在不会报错,更新文档,version+1
    (3)update 更新索引文档部分字段信息
    (4)delete删除指定索引文档
    (5)doc更新索引文档部分字段值,必须配合update使用

    查询到匹配条件然后删除文档
    POST //_delete_by_query
    
    • 1

    比如:

    POST /goods_info/_delete_by_query
    {
      "query": {
        "match": {
          "name": {
            "query": "笔记本"
          }
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    这时就会删除匹配到name为笔记本的文档删除

    查询到匹配条件然后更新文档
    POST //_update_by_query
    
    • 1

    如果我们不指定任何查询,那么会对索引中的每个文档执行更新:

    POST /goods_info/_update_by_query
    
    • 1

    同时呢,也可以结合scrpt脚本对文档字段值,字段类型等进行更新:

    POST my-index-000001/_update_by_query
    {
      "script": {
        "source": "ctx._source.count++",
        "lang": "painless"
      },
      "query": {
        "term": {
          "user.id": "kimchy"
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    详见: doc apis

  • 相关阅读:
    vue中使用xlsx插件导出多sheet excel实现方法
    闪迪ssd plus固态硬盘不识别开卡成功,慧荣SM2246XT量产教程
    解决MySQL错误-this is incompatible with sql_mode=only_full_group_by
    Instagram与独立站的完美结合
    一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度
    SpringBoot保姆级教程(三)SpringBoot原理分析
    新电脑配置前端环境
    day10--232.用栈实现队列+ 225. 用队列实现栈+20. 有效的括号+ 1047. 删除字符串中的所有相邻重复项
    81. this、call、apply、bind?
    Kotlin 开发Android app(七)上:Kotlin函数fun
  • 原文地址:https://blog.csdn.net/LeoHan163/article/details/126433080