系列课程 ElasticSearch 之第 5 篇 —— Kibana 高级查询语句、DSL语言查询和过滤、中文分词器(elasticsearch.bat闪退解决办法)
Elasticsearch: 使用文档权威指南 https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
OK,我们先使用 Kibana 生成一些文档数据:
PUT /biandan/user/zhangsan
{"name":"张三","job":"Java工程师","sign":"走别人的路,让别人无路可走。","age":20
}PUT /biandan/user/lisi
{"name":"李四","job":"Python工程师","sign":"既然选择了远方,便只顾风雨兼程。","age":25
}PUT /biandan/user/wangwu
{"name":"王五","job":"C++工程师","sign":"世界因有你而精彩。","age":30
}PUT /biandan/user/zhuliu
{"name":"朱六","job":"PHP工程师","sign":"岁月不仅磨平了你的棱角,还会把它抛光。","age":35
}PUT /biandan/user/zhuoqi
{"name":"卓七","job":"大数据工程师","sign":"只要不测试,就不会有bug!","age":40
}
1、根据 ID 查询,语法: GET /索引名/类型/ID
GET /biandan/user/zhangsan
2、查询某个类型下的所有文档,语法:GET /索引名/类型/_search
GET /biandan/user/_search
3、根据多个ID批量查询,语法:GET /索引名/类型/_mget 然后用 json 传递 ids
GET /biandan/user/_mget
{"ids":["zhangsan","lisi"]
}
4、复杂条件查询,语法:GET /索引名/类型/_search?q=条件:XX
①查询年龄等于25岁:
GET /biandan/user/_search?q=age:25
②查询年龄小于等于25岁:注意,使用中括号,* 表示所有,TO 必须大写。
GET /biandan/user/_search?q=age[* TO 25]
③查询年龄在25到40岁之间,年龄降序排,只取2条:
GET /biandan/user/_search?q=age[25 TO 40]&sort=age:desc&from=0&size=2
④查询年龄在20到30岁之间,年龄升序排,只取第一条,展示姓名name、职业job。
GET /biandan/user/_search?q=age[25 TO 30]&sort=age:asc&from=0&size=1&_source=name,job
DSL语言查询和过滤
ElasticSearch 中的查询请求有两种方式,一种是简易版的查询(上面的例子),另外一种是使用 JSON 完整的请求体,叫做结构化查询(domain-specific language)。
DSL查询是POST过去一个 JSON,由于Post的请求是 json 格式的,所以存在很多灵活性,也有很多形式。
term 关键字:精确查询
1、根据年龄精确查询【25岁】:(类似 MySQL 中的“等于”查询,Java中的 equals 函数)
GET /biandan/user/_search
{"query": {"term": {"age":25}}
}
注意:现在不能匹配中文,否则出错,问题在后面继续追踪(也搞了挺久):
#! [types removal] Specifying types in search requests is deprecated.
{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 0,"relation" : "eq"},"max_score" : null,"hits" : [ ]}
}
2、match 关键字模糊匹配(类似数据库中的 like 关键字)
查询 job =【C++】
GET /biandan/user/_search
{"query": {"match": {"job": "C++"}}
}
结果:
3、分页查询 job包含【工程师】并且年龄在20~35岁的,取前2条数据,只展示【name、job】字段:
GET /biandan/user/_search
{"query": {"bool": {"must": [{"match":{"job": "工程师"}}],"filter": {"range": {"age": {"gt": 20,"lte": 35}}}}},"from": 0,"size": 2,"_source": ["name","job"]
}
结果:
中文分词器
Elasticsearch 中默认的标准分词器对中文分词不是很友好,会将中文词语拆分成一个个中文的汉字。因此需要引入中文分词器 es-ik 插件。
ES-IK 插件下载地址(注意 ik 的版本一定要对应 ES 的版本):https://github.com/medcl/elasticsearch-analysis-ik/releases
下载压缩包之后,把压缩包复制到 ElasticSearch 的 plugins 目录下,然后解压到当前压缩包的名字。如图:
然后将文件夹重命名为 ik,并且删掉压缩包。
结果如图:
如果遇到启动 elasticsearch.bat 闪退的情况,请按照上面的方法处理!
然后重启 ElasticSearch 服务,看到以下输出就是正确的了。
OK,我们用 postman 测试中文分词器。
首先,我们先用原生自带的标准分词器 standard(基本没人用),发送 POST 请求到:127.0.0.1:9200/_analyze,如图:
发现把【王者荣耀】拆分成王、者、荣、耀了。这不是我们想要的结果。
接下来,我们使用中文分词器:ik_smart
我们发现,ik_smart 对中文分词稍微友好很多。我们还可以自定义分词器。
系列课程 ElasticSearch 之第 5 篇 —— Kibana 高级查询语句、DSL语言查询和过滤、中文分词器(elasticsearch.bat闪退解决办法)相关推荐
- Elasticsearch之中文分词器插件es-ik(博主推荐)
前提 什么是倒排索引? Elasticsearch之分词器的作用 Elasticsearch之分词器的工作流程 Elasticsearch之停用词 Elasticsearch之中文分词器 Elasti ...
- datetimepicker中文不生效_搜索引擎技术(二十)- elasticsearch - 中文分词器
步骤1:分词器概念 步骤2:安装中文分词器步骤3:重启 ElasticSearch步骤4:测试中文分词效果 步骤 1 : 分词器概念 分词器指的是搜索引擎如何使用关键字进行匹配,如 入门 中的关键字: ...
- IBM主机系列课程之单元测试(基础篇)-李海湜-专题视频课程
IBM主机系列课程之单元测试(基础篇)-3681人已学习 课程介绍 IBM主机环境下进行的单元测试,课程包含单元测试重要知识点,从讲解到示例列举,带你逐步深入了解IBM主机的魅力所在. ...
- ELK系列(十)、ES中文分词器IK插件安装和配置远程词库热加载
简介 IK Analyzer是一个开源的,基于Java语言开发的轻量级的中文分词工具包: 最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件:从 3.0 版本开始 ...
- 学习 ES 的笔记、全文检索、倒排索引、Lucene、ik中文分词器、Kibana使用Dev Tools
文章目录 感悟 新接触的单词 知识点一:ES是什么? 知识点二:ES基本概念 知识点三:1.1 什么是全文检索和Lucene? 知识点四:1.2 什么是倒排索引,Lucene实现全文检索的流程是怎样? ...
- 使用Docker快速安装部署ES和Kibana并配置IK中文分词器以及自定义分词拓展词库
使用Docker快速安装部署ES和Kibana的前提:首先需要确保已经安装了Docker环境 如果没有安装Docker的话,可以参考上一篇的内容:Linux上安装Docker 有了Docker环境后, ...
- 如何在Elasticsearch中安装中文分词器(IK+pinyin)
如何在Elasticsearch中安装中文分词器(IK+pinyin) 如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当 ...
- IK分词器(elasticsearch插件)
分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一一个匹配操作,默认的中文分词是将每个字看成一个词(不使用用IK分 ...
- 【Elasticsearch】Elasticsearch analyzer 中文 分词器
1.概述 转载: https://blog.csdn.net/tzs_1041218129/article/details/77887767 分词器首先看文章:[Elasticsearch]Elast ...
- ElasticSearch 中的中文分词器以及索引基本操作详解
文章目录 1.ElasticSearch 分词器介绍 1.1 内置分词器 1.2 中文分词器 1.2.1 安装 1.2.2 测试 1.2.3 自定义扩展词库 1.2.3.1 本地自定义 1.2.3.2 ...
最新文章
- tf.keras.layers.Flatten该网络中的第一层tf.keras.layers.Flatten将图像的格式从2d阵列(28乘28像素)转换为28 * 28 = 784像素的1d阵列。可以
- c# 文件压缩、解压及下载
- Unity3D常用API
- 骚操作:Mac局域网控制Windows10主机
- What is pessimistic locking in Hibernate
- 110报警声+单片机c语言,基于单片机的红外报警系统设计毕业论文.docx
- oeasy教您玩转vim - 23 - 配置文件
- Unable to negotiate with 192.168.XX.XX port XXXX: no matching key exchange method found.
- air macbook 风扇响_MacBook装Windows 7后温度过高/风扇过响的解决办法
- “AI鉴黄师”数据采集标注方案上线
- python pop3lib连接网易企业邮箱
- 人的一生七八十年,到底该如何度过?
- JS常用数据处理方法
- 【简单】唯一摩尔斯密码词
- 中国企业如何玩转海外媒体推广?
- 数学建模入门 方法及代码
- [附源码]计算机毕业设计Python+uniapp基于安卓的校园二手书籍交易APP1yh1y(程序+lw+APP+远程部署)
- 一个平庸程序员自白:我不牛逼但那又怎样?
- CCF CSP 2019-9-1 小明种苹果 C语言100分
- flink sql 知其所以然(十四):维表 join 的性能优化之路(上)附源码