ElasticSearch脚本操作命令

添加映射与索引

图片.png
# 创建索引
PUT person
# 查询索引
GET person
# 删除索引
DELETE person

# 查询映射
GET person/_mapping

# 添加映射 在添加映射之前必须有person索引
#即先进行
put person
#操作
PUT person/_mapping
{
  "properties":{
    "name":{
      "type":"keyword"
    },
    "age":{
      "type":"integer"
    }
  }
}

# 创建索引并添加映射
PUT person
{
  "mappings": {
    "properties": {
      "name":{
        "type": "keyword"
      },
      "age":{
        "type":"integer"
      }
    }
    
  }
}

# 索引库中添加字段
PUT person/_mapping
{
  "properties":{
    "address":{
      "type":"text"
    }
  }
}

操作文档

# 查询索引
GET person

# 添加文档,指定id
PUT person/_doc/1
{
  "name":"张三",
  "age":20,
  "address":"北京"
}

# 查询文档
GET person/_doc/1

# 添加文档,不指定id
POST person/_doc/
{
  "name":"李四",
  "age":20,
  "address":"佛山"
}
# 查询文档
GET person/_doc/u8b2QHUBCR3n8iTZ8-Vk

# 添加文档,不指定id
POST person/_doc/
{
  "name":"李四",
  "age":20,
  "address":"广州"
}
# 查询文档
GET person/_doc/u8b2QHUBCR3n8iTZ8-Vk

# 查询所有文档
GET person/_search

# 删除文档
DELETE person/_doc/1

# 修改文档 根据id,id存在就是修改,id不存在就是添加
PUT person/_doc/2
{
  "name":"哈哈",
  "age":20,
  "address":"深圳"
}

全文查询-match查询

match和term的区别是,match查询的时候,elasticsearch会根据你给定的字段提供合适的分析器,而term查询不会有分析器分析的过程

# match 先会对查询的字符串进行分词,在查询,求交集
GET person/_search
{
  "query": {
    "match": {
      "address": "华为手机"
    }
  }
}

查询文档-term查询

term是代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇
请求url:

POST    person/_search

请求体:

# 查询所有数据
GET person/_search

# 查询 深开头的数据
GET person/_search
{
  "query": {
    "term": {
      "address": {
        "value": "深"
      }
    }
  }
}

查询全部

请求url:

GET  person/_search

关键字搜索数据

请求url:

# 查询名字等于张三的用户
GET  person/_search?q=name:张三

DSL 查询

DSL 查询主要包含两种类型的查询语句:

叶子查询语句 : 用于查询特殊字段的特殊值,例如:match, term, range 等。
复合查询语句 : 可以合并其他的叶子查询或复合查询,从而实现非常复杂的查询逻辑

根据年龄查询

POST  shangguigu/_doc/_search
{
  "query":{
      "match":{
          "age":20
      }
  }
}

查询年龄大于20岁的女性用户

GET  shangguigu/_search
{
  "query":{
    "bool":{
      "filter":{
        "range":{
          "age":{
            "gt":20
          }
        }
      },
      "must":{
        "match":{
          "sex":"女"
        }
      }
    }
  }
}

全文搜索

GET  shangguigu/_search
{
    "query":{
       "match":{
           "name": "张三 李四"
       }
    }
}

高亮显示

GET  shangguigu/_search
{
    "query":{
       "match":{
           "name": "张三 李四"
       }
    },
    "highlight": {
        "fields": {
        "name": {}
        }
    }
}

聚合

在Elasticsearch中,支持聚合操作,类似SQL中的group by操作。

GET  shangguigu/_search
{
    "aggs": {
        "all_interests": {
            "terms": {
                "field": "age"
            }
         }
    }
}

修改下查询语句

{
    "aggs": {
        "all_interests": {
            "terms": {
                "field": "age.keyword"
            }
         }
    }
}

指定响应字段

在响应的数据中,如果我们不需要全部的字段,可以指定某些需要的字段进行返回

GET  shangguigu/_doc/1001?_source=id,name

判断文档是否存在

如果我们只需要判断文档是否存在,而不是查询文档内容,那么可以这样:

HEAD  shangguigu/_doc/1001

存在返回200 - OK

不存在返回404

批量操作:_bulk操作

批量插入数据:

POST _bulk
{"create":{"_index":"atguigu","_id":2001}}
{"id":2001,"name":"name1","age": 20,"sex": "男"}
{"create":{"_index":"atguigu","_id":2002}}
{"id":2002,"name":"name2","age": 20,"sex": "男"}
{"create":{"_index":"atguigu","_id":2003}}
{"id":2003,"name":"name3","age": 20,"sex": "男"}

批量删除:

POST _bulk
{"delete":{"_index":"atguigu","_id":2001}}
{"delete":{"_index":"atguigu","_id":2002}}
{"delete":{"_index":"atguigu","_id":2003}}

分页

和SQL使用 LIMIT 关键字返回只有一页的结果一样,Elasticsearch接受 from 和 size 参数:

size: 结果数,默认10
from: 跳过开始的结果数,默认0

GET shangguigu/_search?size=1&from=2

ElasticSearch集成IK分词器

1)下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

课程资料也提供了IK分词器的压缩包:

image.jpg

2)解压,将解压后的elasticsearch文件夹拷贝到elasticsearch-7.4.0\plugins下,并重命名文件夹为ik
3)重新启动ElasticSearch,即可加载IK分词器

IK分词器测试

IK提供了两个分词算法ik_smart 和 ik_max_word

其中 ik_smart 为最少切分,ik_max_word为最细粒度划分

最小切分:在浏览器地址栏输入地址

POST  _analyze
{
    "analyzer":"ik_smart",
    "text":"我是小盆友"
}

最细切分:在浏览器地址栏输入地址

POST  _analyze
{
    "analyzer":"ik_max_word",
    "text":"我是小盆友"
}

修改索引映射mapping

# 创建索引,添加映射,指定使用ik分词器
PUT person
{
  "mappings": {
    "properties": {
      "name":{
        "type": "keyword"
      },
      "address":{
        "type":"text",
        "analyzer": "ik_max_word"
      }
      
    }
  }
}

# 查询索引
GET person

创建文档

# 添加文档
PUT person/_doc/1
{
  "name":"张三",
  "age":30,
  "address": "华为5G手机"
}

# 添加文档
PUT person/_doc/2
{
  "name":"李四",
  "age":20,
  "address": "小米手机2"
}

# 添加文档
PUT person/_doc/3
{
  "name":"张三",
  "age":29,
  "address": "小米手机4"
}

# 查询所有数据
GET person/_search

再次测试term测试

# 使用term查询 深圳开头的数据
GET person/_search
{
  "query": {
    "term": {
      "address": {
        "value": "小米"
      }
    }
  }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容