Elasticsearch基础知识一分词器及增删改查

分词器

(一)到 https://github.com/medcl/elasticsearch-analysis-ik 下载对应的版本(直接下载release版本,避免mvn打包),下载后是一个zip压缩包。
(二)将压缩包上传至elasticsearch 的安装目录下的plugins下,进行解压,运行如下

unzip  elasticsearch-analysis-ik-5.5.2.zip #解压后文件夹名为elasticsearch
mv elasticsearch ik #将其改名为ik

(三)重启elasticsearch:./elasticsearch
(四)使用head插件(支持 ik_max_word 和ik_smart 两种分词)
在这里插入图片描述

数据模型

在这里插入图片描述

文档

在这里插入图片描述
语法

PUT/POST/GET/DELETE http://ip:端口/索引名称/类型/主键

Query的几种方式

(1)match_all:返回所有文档

GET stu/_search
{
    "query": {
        "match_all": {}
    }
}

(2)match:布尔匹配查询:对查询字符串进行分词,根据分词结果构造布尔查询

GET stu/_search
{
    "query": {
        "match": {分词结果为john和kerry两个单词,
          "name":"John Kerry"只要name字段值中包含有其中
        }
任意一个,那么返回该文档
    }
}

(4)match_phrase:短语匹配查询:对查询字符串进行分词,字段值必须依次匹配所有分词,注意各分词位置不能改变

GET stu/_search
{
    "query": {
        "match_phrase": {分词结果为john和kerry两个单词,
          "name":"John Kerry"如果name字段值中依次包含所
        }有分词,那么返回该文档
    }
}

(5)match_phrase_prefix:短语前缀匹配查询:类似match_phrase,但最后一个分词作为前缀匹配

GET stu/_search
{
    "query": {
        "match_phrase_prefix": {
          "name":"John Ke"最后一个分词作为前缀匹配
        }
    }
}

(6)multi_match:多字段匹配查询

GET stu/_search
{
    "query": {
        "multi_match": {
          "query": "John like cooking",
          "fields": ["name","interest"]
        }
    }
}

(7)term:词条查询,按照存储在倒排索引中的确切字词,对字段进行匹配

GET stu/_search
{
    "query": {
        "term":{
          "name":"john"换成“John”试一试
        }
    }
}

(8)terms:多词条查询:按照存储在倒排索引中的确切字词,对字段进行多词条匹配

GET stu/_search
{
    "query": {
        "terms":{
          "name":["john","da"]
        }
    }
}

(9)range:范围查询

GET stu/_search
{
    "query": {
        "range" : {
            "yearOfBorn" : {
                "gte" : 1995,
                "lte" : 2000
            }
        }
    }
}

(10)bool:布尔查询,查询喜欢“cooking”且不在1995-2000间出生的学生

GET stu/_search
{
    "query": {
      "bool": {
        "must": {
            "match": { "interest": "cooking"} },
        "must_not": {
            "range": { "yearOfBorn": { "gte": 1995, "lte": 2000 }}}
      }
    }
}

新增document

PUT news/new/6
{
  "title":"title test",
  "conent":"content test"
}
//PUT命令是http请求的一种方式,如果了解过restful api,对这个命令应该不陌生。除了我们大家熟悉的get,post,还有put,delete,head等。

news就是我们需要创建的索引,可以理解为数据库

new就是我们需要创建的type,可以理解为表

6就是文档的id,可以理解为一条记录的id

仔细看返回结果,先别看_shards,其它几个字段大家看了之后应该会立马明白。

_version,是elasticsearch里面用来控制版本冲突的,知道下就行,如果修改或者删除,_version的值都会+1。

DELETE /news/new/6

修改document
修改又分为全量修改和部分修改
全量修改用PUT,部分修改用POST

PUT news/new/6
{
  "title":"title test"
}
//注意,如果用全量修改(PUT),就等于是删除之后再新建,所以可以部分修改

部分修改:

POST /news/new/6/_update
{
  "doc":{
    "title":"abcdefg"
  }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值