菜单目录

  • 简介
  • 索引操作
    • 创建索引
    • 查看索引
    • 删除索引
  • 文档操作
    • 插入数据
    • 更新文档
    • 删除文档
  • 查询操作
    • 测试查询的数据
    • 常规查询
      • id单条查询
      • Id批量查询ids
      • 精确查询 term、terms
      • 分词查询match、match_all、multi_match
      • 过滤器filter查询
      • 范围查询range
    • 其他查询
      • 前缀查询prefix
      • 占位符查询wildcard
      • 模糊查询fuzzy
    • 多逻辑组合查询
    • 根据查询条件删除
    • 高亮查询highlight
  • 相关扩展
    • 查询分页
    • 过滤响应属性

简介

以下内容基于Elasticsearch 6.5.4 环境
Elasticsearch 6.5.4 搭建教程

索引操作

创建索引

PUT /school
{"settings": {"number_of_replicas": 1,"number_of_shards": 1},"mappings": {"beijing": {"properties": {"name": {"type": "keyword"},"describe": {"type": "text","analyzer":"ik_max_word"},"location": {"type": "text","analyzer":"ik_max_word"},"tuition": {"type": "double"},"createDate": {"type": "date","format": "yyyy-MM-dd"}}}}
}

查看索引

GET /school

删除索引

DELETE /school

文档操作

插入数据

##ES自动生成ID
POST /school/beijing
{"name":"北京交通大学","describe":"北京交通大学是教育部直属,教育部、交通运输部、北京市人民政府和中国国家铁路集团有限公司共建的全国重点大学,“211工程”“985工程优势学科创新平台”项目建设高校和具有研究生院的全国首批博士、硕士学位授予高校。学校牵头的“2011计划”“轨道交通安全协同创新中心”是国家首批14个认定的协同创新中心之一。2017年,学校正式进入国家“双一流”建设行列,将围绕优势特色学科,重点建设“智慧交通”世界一流学科领域。","location":"北京市海淀区上园村3号","tuition":85000,"createDate":"2020-12-07"
}##自己指定ID
POST /school/beijing/2
{"name":"清华大学","describe":"清华大学是中国著名的高等学府,坐落于北京西北部风景秀丽的清华园。学校始建于1911 年。一个世纪以来,清华大学的发展始终与国家和民族的命运兴衰与共。“自强不息、厚德载物”的校训,“行胜于言”的校风,“严谨、勤奋、求实、创新”的学风,以“爱国奉献、追求卓越”为核心的清华精神,以及“中西融会、古今贯通、文理渗透”的办学特色,对学校的发展产生了深远的影响。。","location":"北京市海淀区清华园","tuition":10000,"createDate":"2020-12-06"
}

更新文档

##文档覆盖更新 PUT /school/beijing/{id}
PUT /school/beijing/cokhQHYBAWLkSrL7zmmv
{"name": "北京交通大学","describe": "北京交通大学是教育部直属,教育部、交通运输部、北京市人民政府和中国国家铁路集团有限公司共建的全国重点大学,“211工程”“985工程优势学科创新平台”项目建设高校和具有研究生院的全国首批博士、硕士学位授予高校。学校牵头的“2011计划”“轨道交通安全协同创新中心”是国家首批14个认定的协同创新中心之一。2017年,学校正式进入国家“双一流”建设行列,将围绕优势特色学科,重点建设“智慧交通”世界一流学科领域。","location": "北京市海淀区上园村3号","tuition": 8500,"createDate": "2020-12-07"
}##文档指定属性更新 /school/beijing/{id}/_update
POST /school/beijing/cokhQHYBAWLkSrL7zmmv/_update
{"doc": {"tuition" : 7500}
}

删除文档

## DELETE /school/beijing/{id}
DELETE /school/beijing/101

查询操作

测试查询的数据

## 创建索引
PUT /school
{"settings": {"number_of_replicas": 1,"number_of_shards": 1},"mappings": {"beijing": {"properties": {"name": {"type": "keyword"},"describe": {"type": "text","analyzer":"ik_max_word"},"location": {"type": "text","analyzer":"ik_max_word"},"tuition": {"type": "double"},"createDate": {"type": "date","format": "yyyy-MM-dd"}}}}
}   ## 添加测试数据
POST /school/beijing
{"name":"北京交通大学","describe":"北京交通大学是教育部直属,教育部、交通运输部、北京市人民政府和中国国家铁路集团有限公司共建的全国重点大学,“211工程”“985工程优势学科创新平台”项目建设高校和具有研究生院的全国首批博士、硕士学位授予高校。学校牵头的“2011计划”“轨道交通安全协同创新中心”是国家首批14个认定的协同创新中心之一。2017年,学校正式进入国家“双一流”建设行列,将围绕优势特色学科,重点建设“智慧交通”世界一流学科领域。","location":"北京市海淀区上园村3号","tuition":85000,"createDate":"2020-12-07"
}POST /school/beijing/2
{"name":"清华大学","describe":"清华大学是中国著名的高等学府,坐落于北京西北部风景秀丽的清华园。学校始建于1911 年。一个世纪以来,清华大学的发展始终与国家和民族的命运兴衰与共。“自强不息、厚德载物”的校训,“行胜于言”的校风,“严谨、勤奋、求实、创新”的学风,以“爱国奉献、追求卓越”为核心的清华精神,以及“中西融会、古今贯通、文理渗透”的办学特色,对学校的发展产生了深远的影响。。","location":"北京市海淀区清华园","tuition":10000,"createDate":"2020-12-06"
}POST /school/beijing/5
{"name":"北京工业大学","describe":"北京工业大学(Beijing University Of Technology)创建于1960年,是一所以工为主,工、理、经、管、文、法、艺术、教育相结合的多科性市属重点大学。1981年成为国家教育部批准的第一批硕士学位授予单位,1985年成为博士学位授予单位,1996年通过国家“211工程”预审,正式跨入国家二十一世纪重点建设的百所大学的行列。2017年9月,学校正式进入国家一流学科建设高校行列,8个学科跻身2020年QS世界大学排行榜前500,位列QS2020年世界大学排名中国内地第32,化学、材料科学、工程、环境与生态、计算机科学5个学科进入ESI前1%。","location":"中国北京市朝阳区平乐园100号","tuition":75000,"createDate":"2020-12-07"
}POST /school/beijing/6
{"name":"北京航空航天大学","describe":"北京航空航天大学(简称北航)成立于1952年,由当时的清华大学、北洋大学、厦门大学、四川大学等八所院校的航空系合并组建,是新中国第一所航空航天高等学府,现隶属于工业和信息化部。学校分为学院路校区和沙河校区,占地3000亩,总建筑面积150余万平方米。自建校以来,北航一直是国家重点建设的高校,是全国第一批16所重点高校之一,也是80年代恢复学位制度后全国第一批设立研究生院的22所高校之一,首批进入“211工程”,2001年进入“985工程”。经过六十年的建设与发展,学校基本形成了研究型大学的核心竞争力,内在凝聚力和国内外影响力得到显著提升,跻身国内高水平大学的第一方阵","location":"北京市海淀区学院路37号","tuition":10000,"createDate":"2020-12-05"
}POST /school/beijing/6
{"name":"北京理工大学","describe":"北京理工大学1940年诞生于延安,是中国共产党创办的第一所理工科大学,是新中国成立以来国家历批次重点建设的高校,首批进入国家“211工程”和“985工程”,首批进入“世界一流大学”建设高校A类行列。毛泽东同志亲自题写校名,李富春、徐特立、李强等老一辈无产阶级革命家先后担任学校主要领导。学校现隶属于工业和信息化部,全体师生员工正对标国家“两个一百年”奋斗目标,全力朝着中国特色世界一流大学的建设目标迈进。","location":"北京海淀区中关村南大街5号","tuition":6000,"createDate":"2020-12-05"
}POST /school/beijing/101
{"name":"测试数据","describe":"这是一条测试的数据,专门用来测试用的","createDate":"2020-12-08"}

常规查询

id单条查询

GET /school/beijing/{id}

Id批量查询ids

POST /school/beijing/_search
{"query": {"ids": {"values": ["5","6"]}}
}

精确查询 term、terms

精确查询,不会对字符进行分词操作,在进行查询
term 属性只能一个值 类似 SQL 中 field = value
terms 对term的扩张 类似 SQl 中 field in (value1,value2)
###使用term进行查询
POST /school/beijing/_search
{"query": {"term": {"describe": {"value": "北京"}}}
}###使用term进行查询
POST /school/beijing/_search
{"query": {"terms": {"describe": ["北京"]}},"sort": [{"tuition": {"order": "asc"},"createDate": {"order": "desc"}}],"_source": ["tuition","createDate"]
}

分词查询match、match_all、multi_match

match: 查询知道分词器的存在,会对field进行分词操作,然后再查询。而term不会分词,会把field当成一个整体查询。analyzer: 指定分词器 ik_smart(最粗粒度的拆分)、ik_max_word(最细粒度的拆分)operator:表示单个字段如何匹配查询条件的分词 取值 or 和 and,默认值是orminimum_should_match: 分词最少匹配个数 默认值是1
match_all: 查询所有数据
multi_match: 在多个字段上执行匹配相同的查询type: 共有五种多字段匹配查询:best_fields,most_fields,cross_fields,phrase和phrase_prefix,默认的是best_fields类型
## 进行分词查询
POST /school/beijing/_search
{"from": 0, "size": 2, "query": {"match": {"describe": {"query": "北京交通","analyzer": "ik_max_word","operator": "or","minimum_should_match": 2}}}
}
## 查询所有数据
POST /school/beijing/_search
{"from": 0, "size": 2, "query": {"match_all": {}}
}
##多字段匹配查询
POST /school/beijing/_search
{"query": {"multi_match": {"query": "理工大学","fields": ["describe","name"],"analyzer": "ik_smart","type": "best_fields"}}
}

过滤器filter查询

query  查询上下文 这种语句在执行时既要计算文档是否匹配,还要计算文档相对于其他文档的匹配度有多高,匹配度越高,_score 分数就越高
filter  过滤上下文 过滤上下文中的语句在执行时只关心文档是否和查询匹配,不会计算匹配度,也就是得分。
POST /school/beijing/_search
{"query": {"bool": {"filter": {"match": {"describe": {"query": "北京交通大学","analyzer": "ik_smart"}}}}}
}

范围查询range

对于需要用到范围的查询,可以使用range,range和term作用的位置相同,比如查找id从1到10的文章,其中gt: > 大于(greater than)lt: < 小于(less than)gte: >= 大于或等于(greater than or equal to)lte: <= 小于或等于(less than or equal to)
POST /school/beijing/_search
{"query": {"range": {"createDate": {"gte": "2020-12-05","lte": "2020-12-06"}}},"sort": [{"createDate": {"order": "asc"}}]
}

其他查询

前缀查询prefix

前缀查询,可以通过一个关键字去指定一个field 的前缀,从而查询到指定文档
POST /school/beijing/_search
{"query": {"prefix": {"name": {"value": "北京理工"}}}
}

占位符查询wildcard

通配查询,同mysql中的like 是一样的,可以在查询时,在字符串中指定通配符*和占位符?
POST /school/beijing/_search
{"query": {"wildcard": {"describe": {"value": "北京??"}}}
}POST /school/beijing/_search
{"query": {"wildcard": {"describe": {"value": "北京*"}}}
}

模糊查询fuzzy

fuzzy 模糊查询会 出现错别字的ES会自动进行更正处理,不是特别稳定 prefix_length: 指定前面几个字符必须正确
##使用错别字进行查询 北京交通大学
POST /school/beijing/_search
{"query": { "fuzzy": {"name": {"value": "北京交大通学", "prefix_length": 3}}}
}

多逻辑组合查询

当需要多个逻辑组合查询的时候,可以使用bool来组各逻辑。bool可以包含
must:搜索的结果必须匹配,类似SQL的AND
must_not: 搜索的结果必须不匹配,类似SQL的NOT
should: 搜索的结果至少匹配到一个,类似SQL的OR{"bool" : {"must" :     [],"should" :   [],"must_not" : [],}
}
### describe like '%大学%' and createDate = '2020-12-07' and name != '北京工业大学'
#term 精确查询
POST /school/beijing/_search
{"query": {"bool": {"must": [{"term": {"describe": {"value": "大学"}} },{"term": {"createDate": {"value": "2020-12-07"}} }],"must_not":[{"term": {"name": {"value": "北京工业大学"}} }]}}
}#match 分词后查询
POST /school/beijing/_search
{"query": {"bool": {"must": [{"match": {"describe": {"query": "北京大学","analyzer": "ik_max_word"}}},{"term": {"createDate": {"value": "2020-12-07"}} }],"must_not":[{"term": {"name": {"value": "北京工业大学"}} }]}}
}

根据查询条件删除

_delete_by_query 根据查询的条件对文档进行删除
POST /school/beijing/_delete_by_query
{"query": {"term": {"name": {"value": "测试数据"}}}
}

高亮查询highlight

对查询关键字进行前后包装,可以在html进行高亮显示
ES提供了一个highlight 属性,他和query 同级别。frament_size: 指定高亮数据展示多少个字符回来pre_tags:指定前缀标签<front color="red">post_tags:指定后缀标签 </font>
## 请求报文
POST /school/beijing/_search
{"query": {"match": {"describe": {"query": "北京交通大学","analyzer": "ik_smart"}}},"highlight": {"fields": {"describe": {}},"pre_tags": "<p>","post_tags": "</p>","fragment_size": 10}
}## 响应结果
{"took" : 2,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : 1,"max_score" : 1.2559291,"hits" : [{"_index" : "school","_type" : "beijing","_id" : "cokhQHYBAWLkSrL7zmmv","_score" : 1.2559291,"_source" : {"name" : "北京交通大学","describe" : "北京交通大学是教育部直属,教育部、交通运输部、北京市人民政府和中国国家铁路集团有限公司共建的全国重点大学,“211工程”“985工程优势学科创新平台”项目建设高校和具有研究生院的全国首批博士、硕士学位授予高校。学校牵头的“2011计划”“轨道交通安全协同创新中心”是国家首批14个认定的协同创新中心之一。2017年,学校正式进入国家“双一流”建设行列,将围绕优势特色学科,重点建设“智慧交通”世界一流学科领域。","location" : "北京市海淀区上园村3号","tuition" : 8500,"createDate" : "2020-12-07"},## 这里是高亮处理后的响应"highlight" : {"describe" : ["<p>北京交通大学</p>是教育部直属"]}}]}
}

相关扩展

查询分页

from - 表示起始位置,size - 表示每页数量;类似与 MySQL 的 limit + offset
POST /school/beijing/_search
{"from": 0,"size": 1,"query": {"match_all": {}}
}

过滤响应属性

过滤响应字段 _source 配置需要响应的属性
POST /school/beijing/_search
{"query": {"bool": {"filter": {"match": {"describe": {"query": "北京大学","analyzer": "ik_max_word"}}}}},"_source": "describe"
}

Elasticsearch 入门案例相关推荐

  1. Spring Data ElasticSearch入门案例

    Spring Data ElasticSearch入门案例 创建maven工程elasticsearch_springdata 基于maven导入坐标 导入spring data elasticsea ...

  2. SpringData ElasticSearch入门案例

    导入需要的依赖坐标 <dependencies><dependency><groupId>org.elasticsearch</groupId>< ...

  3. python elasticsearch 入门教程(二) ---全文搜索

    python elasticsearch 入门教程(二) ---全文搜索 截止目前的搜索相对都很简单:单个姓名,通过年龄过滤.现在尝试下稍微高级点儿的全文搜索--一项 传统数据库确实很难搞定的任务. ...

  4. Elasticsearch入门到精通教程 - 学习资料综合

    背景 因经常被问到Elasticsearch相关一些资料教程,这里特例整理一份以前自己的学习资料,希望对你有用. 信息资料 1. 基本API用法教程 Elasticsearch JAVA API教程G ...

  5. 全文检索-ElasticSearch入门

    文章目录 1. 基于Lucene的全文检索 1.1 全文检索概念 1.2 全文检索过程 1.3 全文检索相关概念 1.4 全文检索的使用场景 2. ElasticSearch 2.1 ElasticS ...

  6. ElasticSearch入门总结

    1.ElasticSearch下载和安装 ElasticSearch是使用java开发的,且本版本的es需要的jdk版本要是1.8以上,所以安装ElasticSearch 之前保证JDK1.8+安装完 ...

  7. ES(Elasticsearch)入门学习教程

    Elasticsearch 入门学习教程 1.1 为什么要学Elasticsearch? 1.2 如何下载安装使用ES? 1.2.1 ES 安装使用条件 1.2.2 ES 下载须知 1.2.3 ES ...

  8. 大白话ElasticSearch入门概念,看不懂找我!

    点击上方蓝色"胖滚猪学编程",选择"设为星标" 跟着胖滚猪学编程!好玩!有趣! 这是胖滚猪ES系列博文第三篇,大白话ElasticSearch入门概念. 阅读本 ...

  9. 2021年大数据Flink(八):Flink入门案例

    目录 Flink入门案例 前置说明 API 编程模型 准备工程 pom文件 log4j.properties Flink初体验 需求 编码步骤 代码实现 Flink入门案例 前置说明 API API ...

最新文章

  1. 信息安全“拷问”智慧城市建设 如何解决
  2. 全国计算机在线做题,2020全国一级计算机基础及MS Office应用考试在线自测试题库(不限设备,登陆即可做题)...
  3. mysql数据库分表备份脚本_MySQL分库分表备份脚本
  4. 基于Ruby的watir-webdriver自动化测试方案与实施(四)
  5. 从零开始学习docker(四)host
  6. Mysql 可重复读
  7. 【leetcode】二进制手表-经典或回溯题目
  8. PPAPI nacl_sdk安装
  9. [lua]紫猫lua教程-命令宝典-L1-01-07. table表
  10. 天啦,这才是英国退欧的真相!
  11. Excel 数据透视表教程大全之 03 刷新数据、添加多个字段作为值字段、值显示为总数的百分
  12. 神奇的分形艺术(一):无限长的曲线可能围住一块有限的面积
  13. GEE系列:第 1 单元 Google 地球引擎简介
  14. 我的理想200字计算机工程师,我的理想作文200字
  15. c语言中TR1=1什么意思,c – 如何在Visual Studio 2010(tr1 :: function)中使用tr1?
  16. 校园网常见故障及解决方案
  17. The Annotated Diffusion Model(翻译)
  18. 使用新媒体管家采集公众号文案
  19. 中式风格,自然淡雅,彰显极致生活格调!
  20. 复杂问题简单化以及简单问题复杂化

热门文章

  1. 国家2级计算机考试准考证号
  2. 逆向学习实战之--替换哈罗单车图片
  3. python写音乐_你想过用代码来写音乐吗?我用业余时间开发的一个可以编程写音乐的python库(一)...
  4. 卷积神经网络实现手写数字集
  5. PTA1018 锤子剪刀布
  6. 贪婪洞窟2一直显示连接服务器失败,贪婪洞窟2登陆不了怎么办?游戏无法登陆解决方法...
  7. c++逆天改命进阶--二叉树练习题
  8. 江苏“同心圆”工程为银发投资安全设“保护圈”
  9. 大数据毕设选题 - 机器学习餐厅销量预测(大数据 python)
  10. java word转二进制_DWORD WORD到INT的转换