elasticsearch 基本操作

CRUD

创建


PUT /test1/_doc/1
{
  "name":"花开不识君123",
  "age":23
}
定义类型
PUT /test2
{
  "mappings": {
    "properties": {
      "name":{
        "type": "text"
      },
      "age":{
        "type": "integer"
      },
      "birthday":{
        "type": "date"
      }
    }
  }
}

查找

GET /test1 # 查找一个索引的信息
GET /_cat/indices # 查找所有索引的信息

更新

以前的方式 # 覆盖提交 ,如果修改的内容将会完全覆盖掉原来的内容,
PUT /test1/_doc/1
{
  "name":"花开不识君123", # 缺少age,将会去除age字段
}
restful风格
POST /test1/_update/1
{
  "doc":{
    "name":"花开"
  }
}

删除

DELETE /test1

复杂查询

返回值释义

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 37,
      "relation" : "eq"
    },
    "max_score" : 5.006072,
    "hits" : [
      {
        "_index" : "jd_goods",
        "_type" : "_doc",
        "_id" : "bbkgwXkBjG626xHb-Lcu",
        "_score" : 5.006072,
        "_source" : {
          "image" : "//img10.360buyimg.com/n1/s200x200_jfs/t1/155845/22/16835/256780/6055644dE6e1a9178/ef5e0b1c514dd878.jpg",
          "name" : "spring三剑客:微服务实战+Spring实战(第五版)第5版+Spring Boot实战",
          "price" : "¥175.00"
        }
      }
    ]
  }
}
  1. took 查询花费的时间 单位是毫秒
  2. timed_out是否超时 在请求超时之前,Elasticsearch 将会返回已经成功从每个分片获取的结果。
  3. _shards 分片信息 total 表示参与总分片数,successful 表示成功参与的分片数 ,skipped 跳过的分片数,failed 参与失败的分片数
  4. hits 命中信息 total 总的value 表示总命中数 relation表示查询使用的关系条件
  5. max_score 最符合条件结果的分数
  6. hits(具体的) 它的每个元素就是一个具体的数据信息
  7. _source 数据的源信息

多条件查询

must表示所有条件都要被满足
must-not 表示所有条件都不能满足
should表示可以只满足其中一个


GET /huakai_index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "花开"
          }
        },
        {
          "match": {
            "age": "10"
          }  
        }
      ]
    }
  }

精准匹配

term query会去倒排索引中寻找确切的term,花开 在倒排索引里会被切分成 “花”,“开”,正因为term不会被分词,使用"花开"去寻找时自然什么都找不到,此时使用keyword它在倒排索引作为一个整体,就可以被查到了

而英文如果中间不带空格,并不会被分成独立的单词,因此不需要添加keyword,而如果出现"aaa bbb" ,这样的形式,想要精准匹配aaa 同样需要添加keyword


GET /test1/_search
{
  "query": {
    "term": {
      "name.keyword": { # 中文需要添加keyword 英文似乎不需要
        "value": "花开"
      }
    }
  }
}

范围查询

"range": {
            "age": {
            "gte": 10, # 大于等于
            "lte": 30 # 小于
          }

高亮

  "highlight": {
    "pre_tags": "<p style='color:red'>",
    "post_tags": "</p>", 
    "fields": {
      "name": {}
    }
  }
  1. match是会进行分词,使用的是默认的分词器,只要包含其中的一个分词就能会被查询出来

  2. must, 返回的文档必须满足must子句的条件,并且参与计算分值,filter, 返回的文档必须满足filter子句的条件。但是跟Must不一样的是,不会计算分值, 并且可以使用缓存

控制返回集

  "_source":["name","desc","age"], # 控制返回字段

多字段查询

会在多个字段中进行匹配
GET /test1/_search
{
  "query": {
    "multi_match": {
      "query": "夏辉",
      "fields": ["name","desc"]
    }
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值