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闪退解决办法)相关推荐

  1. Elasticsearch之中文分词器插件es-ik(博主推荐)

    前提 什么是倒排索引? Elasticsearch之分词器的作用 Elasticsearch之分词器的工作流程 Elasticsearch之停用词 Elasticsearch之中文分词器 Elasti ...

  2. datetimepicker中文不生效_搜索引擎技术(二十)- elasticsearch - 中文分词器

    步骤1:分词器概念 步骤2:安装中文分词器步骤3:重启 ElasticSearch步骤4:测试中文分词效果 步骤 1 : 分词器概念 分词器指的是搜索引擎如何使用关键字进行匹配,如 入门 中的关键字: ...

  3. IBM主机系列课程之单元测试(基础篇)-李海湜-专题视频课程

    IBM主机系列课程之单元测试(基础篇)-3681人已学习 课程介绍         IBM主机环境下进行的单元测试,课程包含单元测试重要知识点,从讲解到示例列举,带你逐步深入了解IBM主机的魅力所在. ...

  4. ELK系列(十)、ES中文分词器IK插件安装和配置远程词库热加载

    简介 IK Analyzer是一个开源的,基于Java语言开发的轻量级的中文分词工具包: 最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件:从 3.0 版本开始 ...

  5. 学习 ES 的笔记、全文检索、倒排索引、Lucene、ik中文分词器、Kibana使用Dev Tools

    文章目录 感悟 新接触的单词 知识点一:ES是什么? 知识点二:ES基本概念 知识点三:1.1 什么是全文检索和Lucene? 知识点四:1.2 什么是倒排索引,Lucene实现全文检索的流程是怎样? ...

  6. 使用Docker快速安装部署ES和Kibana并配置IK中文分词器以及自定义分词拓展词库

    使用Docker快速安装部署ES和Kibana的前提:首先需要确保已经安装了Docker环境 如果没有安装Docker的话,可以参考上一篇的内容:Linux上安装Docker 有了Docker环境后, ...

  7. 如何在Elasticsearch中安装中文分词器(IK+pinyin)

    如何在Elasticsearch中安装中文分词器(IK+pinyin) 如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当 ...

  8. IK分词器(elasticsearch插件)

    分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一一个匹配操作,默认的中文分词是将每个字看成一个词(不使用用IK分 ...

  9. 【Elasticsearch】Elasticsearch analyzer 中文 分词器

    1.概述 转载: https://blog.csdn.net/tzs_1041218129/article/details/77887767 分词器首先看文章:[Elasticsearch]Elast ...

  10. ElasticSearch 中的中文分词器以及索引基本操作详解

    文章目录 1.ElasticSearch 分词器介绍 1.1 内置分词器 1.2 中文分词器 1.2.1 安装 1.2.2 测试 1.2.3 自定义扩展词库 1.2.3.1 本地自定义 1.2.3.2 ...

最新文章

  1. tf.keras.layers.Flatten该网络中的第一层tf.keras.layers.Flatten将图像的格式从2d阵列(28乘28像素)转换为28 * 28 = 784像素的1d阵列。可以
  2. c# 文件压缩、解压及下载
  3. Unity3D常用API
  4. 骚操作:Mac局域网控制Windows10主机
  5. What is pessimistic locking in Hibernate
  6. 110报警声+单片机c语言,基于单片机的红外报警系统设计毕业论文.docx
  7. oeasy教您玩转vim - 23 - 配置文件
  8. Unable to negotiate with 192.168.XX.XX port XXXX: no matching key exchange method found.
  9. air macbook 风扇响_MacBook装Windows 7后温度过高/风扇过响的解决办法
  10. “AI鉴黄师”数据采集标注方案上线
  11. python pop3lib连接网易企业邮箱
  12. 人的一生七八十年,到底该如何度过?
  13. JS常用数据处理方法
  14. 【简单】唯一摩尔斯密码词
  15. 中国企业如何玩转海外媒体推广?
  16. 数学建模入门 方法及代码
  17. [附源码]计算机毕业设计Python+uniapp基于安卓的校园二手书籍交易APP1yh1y(程序+lw+APP+远程部署)
  18. 一个平庸程序员自白:我不牛逼但那又怎样?
  19. CCF CSP 2019-9-1 小明种苹果 C语言100分
  20. flink sql 知其所以然(十四):维表 join 的性能优化之路(上)附源码

热门文章

  1. 硕士android毕业答辩ppt,硕士研究生毕业答辩ppt全攻略
  2. css3D制作旋转魔方
  3. windows聚焦 电脑锁屏不显示图片问题
  4. 彻底了解HTTP模块
  5. 如何驱动直流电机H桥驱动笔记
  6. windows系统常见端口和木马默认使用端口
  7. 银联在线php支付接口,PHP网站在线银联支付实现大额付款案例
  8. 【编程|二十四点】关于编程解决二十四点的两种思路
  9. mui框架从0到1【webapp开发教程】
  10. 无线通信信号的功率表示方法中dBm,dB与w的换算关系