• es 的数据操作


    一、ES数据的操作

    1.创建索引

    1)语法
    PUT /<index>
    
    2)示例
    PUT /index
    
    curl -XPUT 'http://10.0.0.71:9200/index'
    

    2.创建数据

    1)数据结构
    ES存储三个必要构成
    _index
    _type
    _id
    
    构成 说明
    _index 索引(数据存储的地方)
    _type 类型(数据对应类)
    _id 数据的唯一标识
    2)语法
    PUT /<index>/_doc/<_id>
    POST /<index>/_doc/
    PUT /<index>/_create/<_id>
    POST /<index>/_create/<_id>
    
    index:索引的名称,如果索引不存在,会自动创建
    _doc:类型
    _id:唯一标识,可以手动指定,也可以自动生成
    
    3)使用自定义ID插入数据
    PUT /index/_doc/1
    {
      "name":"qiudao",
      "age":"18"
    }
    
    #该方式企业应用较少
    	1.需要修改id的值
    	2.指定ID插入数据时,ES会先拿着指定的id去对比一遍所有数据,看看有没有相同值
    
    4)使用随机ID插入数据
    POST /index/_doc/
    {
      "name":"qiudao",
      "age":"20"
    }
    
    5)添加字段指定ID
    POST /index/_doc/
    {
      "id":"1",
      "name":"qiudao",
      "age":"20"
    }
    

    3.查询数据

    1)简单查询
    #查询所有索引的(信息)
    GET /_all
    GET _all
    
    #查看所有索引的(数据)
    GET /_all/_search
    
    #查看指定索引的信息
    GET /teacher
    
    #查看指定索引的数据
    GET /teacher/_search
    
    #查看索引中指定的数据
    GET /teacher/user/2
    GET /teacher/user/1m-gGHYB5ia7o7wd9dPk
    
    2)单条件查询
    1>方法一:
    GET /teacher/_search
    {
      "query": {
        "term": {
          "age": {
            "value": "18"
          }
        }
      }
    }
    
    2>方法二:
    GET /teacher/_search
    {
      "query": {
        "term": {
          "age": "18"
        }
      }
    }
    
    3>方法三:
    GET /teacher/_search
    {
      "query": {
        "match": {
          "age": "18"
        }
      }
    }
    
    #指定条件可以使用term也可以使用match,term搜索数据时不进行分词,适合进行精确查找,match搜索时进行分词适用于全文检索
    
    3)多条件查询
    1>must查询(and)
    #多个查询条件必须全部满足  &
    GET /teacher/_search
    {
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "age": {
                  "value": "18"
                }
              }
            },
            {
              "term": {
                "sex": {
                  "value": "nv"
                }
              }
            }
          ]
        }
      }
    }
    
    2>filter查询(and)
    #跟must作用一样,但是速度要比must快一点
    GET /teacher/_search
    {
      "query": {
        "bool": {
          "filter": [
            {
              "term": {
                "age":"18"
              }
            },
            {
              "term": {
                "sex":"nv"
              }
            }
          ]
        }
      }
    }
    
    3>should查询(or)
    #多条件查询时,符合其中一个条件就可以  |
    GET /teacher/_search
    {
      "query": {
        "bool": {
          "should": [
            {
              "term": {
                "age": {
                  "value": "18"
                }
              }
            },
            {
              "term": {
                "id": {
                  "value": "5"
                }
              }
            }
          ]
        }
      }
    }
    

    4)must_not(not)

    GET /teacher/_search
    {
      "query": {
        "bool": {
          "must_not": [
            {
              "term": {
                "age": {
                  "value": "18"
                }
              }
            },
            {
              "term": {
                "id": {
                  "value": "5"
                }
              }
            }
          ]
        }
      }
    }
    
    5)must和should结合使用
    #查询年龄是21或者年龄是18岁并且名字是lizhenglin的数据
    GET /teacher/_search
    {
      "query": {
        "bool": {
          "should": [
            {
              "term": {
                "age": {
                  "value": "21"
                }
              }
            },
            {
              "bool": {
                "must": [
                  {
                    "term": {
                      "age": {
                        "value": "18"
                      }
                    }
                  },
                  {
                    "term": {
                      "name": {
                        "value": "lizhenglin"
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }
    

    4.修改数据

    #修改数据通过_id进行修改,修改数据是,除了要修改的字段意外,其他的字段也要全部写上
    PUT /teacher/user/9G-FHXYB5ia7o7wdEdOH
    {
      "id":"6",
      "name":"wananfeng",
      "sex":"nan",
      "age":"25"
    }
    

    5.删除数据

    #删除指定数据,通过_id进行选择删除
    DELETE /teacher/user/9G-FHXYB5ia7o7wdEdOH
    
    #删除索引
    DELETE /teacher
    
  • 相关阅读:
    BZOJ 1093: [ZJOI2007]最大半连通子图
    BZOJ 1406: [AHOI2007]密码箱
    BZOJ 1073: [SCOI2007]kshort
    BZOJ 1857: [Scoi2010]传送带
    AC日记——天天爱跑步 洛谷 P1600
    AC日记——[Sdoi2010]粟粟的书架 bzoj 1926
    AC日记——The Shortest Path in Nya Graph hdu 4725
    AC日记——文化之旅 洛谷 P1078
    AC日记——【模板】分块/带修改莫队(数颜色) 洛谷 P1903
    AC日记——大爷的字符串题 洛谷 P3709
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/14070287.html
Copyright © 2020-2023  润新知