• elasticSearch的索引库文档的增删改查


    我们都知道,elasticsearch在进行搜索引擎的工作时,是会先把数据库中的信息存储一份到elasticsearch中,再去分词查询等之后的工作的。

    elasticsearch中的文档数据会被序列化为json格式后存储在elasticsearch中。elasticsearch会对存储的数据进行分类管理,相同类型的放在一起。

    索引:相同类型的文档的集合(即同一类型数据的集合)叫索引(这个不是MySQL中的那个索引),为了区分开,我们通常把这的索引叫索引库(对应的mysql数据库中的table表)。

    映射:索引中文档的字段约束信息,类似表的结构约束。常见的mapping映射有:

    type: 字段数据类型,常见类型有:1、字符串:text(可分词)、keyword(精确值,不可分词,比如品牌名)  ;  2、数值: long、integer、short、byte、double、float ;3、布尔:boolean; 4、日期: date; 5、对象: object

    index:是否创建索引,默认是true。看看在实际搜索时你会不会根据这个字段进行筛选查询,不会用到,就false。

    analyser:分词器,只有text类型才会分词

    properties :该字段的子字段,只有object才会用到。

    1. #创建索引库并设置mapping映射
    2. PUT /heima
    3. {
    4. "mappings": {
    5. "properties": {
    6. "info":{
    7. "type": "text"
    8. , "analyzer": "ik_smart"
    9. },
    10. "age":{
    11. "type": "byte"
    12. },
    13. "email":{
    14. "type": "keyword"
    15. , "index": false
    16. },
    17. "name":{
    18. "type": "object",
    19. "properties": {
    20. "firstName": {
    21. "type": "keyword"
    22. },
    23. "lastName": {
    24. "type": "keyword"
    25. }
    26. }
    27. }
    28. }
    29. }
    30. }
    31. #查询索引库
    32. GET /heima
    33. #删除索引库
    34. DELETE /heima

     这代码意思是我们创建的索引库 名叫 /heima  其中属性用info 、age、email、name(子属性 firstName、lastName);

    修该操作有点特殊,不支持对索引库中已有的字段进行修改,但可以新增没有的字段

    1. #修改索引库,不支持对已有的索引库做出修改,但可以添加新的字段
    2. PUT /heima/_mapping
    3. {
    4. "properties":{
    5. "info":{
    6. "type":"keyword"
    7. }
    8. }
    9. }

    下面是对索引库中文档的增删改查:

    1. #新增文档 post /索引库名/_doc/文档id
    2. POST /heima/_doc/1
    3. {
    4. "age":21,
    5. "email":"****1",
    6. "info":"黑马程序员Java学习",
    7. "name":{
    8. "firstName":"yun",
    9. "lastName":"zhao"
    10. }
    11. }
    12. #查询文档
    13. GET /heima/_doc/1
    14. #删除文档
    15. DELETE /heima/_doc/1

     同样,修改操作有点特殊,有俩种方式:

    1. #方法一:全量修改,会删除旧文档,添加新文档,文档内所有字段都需要写一遍
    2. #如果修改的文档id对应文档不存在,修改操作就会变为新增操作
    3. PUT /heima/_doc/1
    4. {
    5. "age":21,
    6. "email":"****2",
    7. "info":"黑马程序员Java学习",
    8. "name":{
    9. "firstName":"yun",
    10. "lastName":"zhao"
    11. }
    12. }
    13. #方法二:增量修改,修改指定字段
    14. POST /heima/_update/1
    15. {
    16. "doc": {
    17. "email":"*****3"
    18. }
    19. }

     批量处理:同时新增、删除、更新多个数据:

    1. #批量处理 index为新增,注意!新增的各个字段必须写在同一行中。
    2. POST /_bulk
    3. {"index":{"_index":"heima","_id":3}}
    4. {"info":"黑马程序员Java学习3","age":23,"email":"****3","name":{"firstName":"wu","lastName":"wang"}}
    5. {"index":{"_index":"heima","_id":4}}
    6. {"info":"黑马程序员Java学习4","age":24,"email":"****4","name":{"firstName":"liu","lastName":"liu"}}
    7. #批量删除 delete为删除
    8. POST /_bulk
    9. {"delete":{"_index":"heima","_id":3}}
    10. {"delete":{"_index":"heima","_id":4}}
    11. #批量更新 update 。 doc中写要更新的字段
    12. POST /_bulk
    13. {"update":{"_id":3,"_index":"heima"}}
    14. {"doc":{"email":"****3.1"}}
    15. {"update":{"_id":4,"_index":"heima"}}
    16. {"doc":{"email":"****4.1"}}

  • 相关阅读:
    测试开发该如何在团队中推广新工具、新技术(深度好文)
    套接字编程
    带你走进并发编程的世界
    【一】1D测量 Measuring——measure_projection()算子
    我的测试开发十年之路
    offline RL · PbRL | Preference Transformer:反正感觉 transformer 很强大
    八、Vue3基础之八
    函数(1)
    docker-compose部署三主三从redis集群
    【数据结构】栈的顺序表实现
  • 原文地址:https://blog.csdn.net/hguhbh/article/details/140260979