Elasticsearch
文章平均质量分 84
Elasticsearch学习笔记,努力成为编程小达人
瑟 王
找到工作啦,苏州汇川外包人员,努力搬砖
展开
-
【Elasticsearch教程21】分页查询以及Array数组排序 nested排序 详细案例
默认情况下,ES搜索结果hits里有10条结果,我们可以使用from和size这2个参数实现分页查询原创 2022-09-20 16:28:07 · 3339 阅读 · 1 评论 -
【Elasticsearch教程20】Pinyin拼音分词器 以及多音字修改
人员通讯录,不确定人名具体是哪个汉字,只知道读音,可以输入汉字+全拼音、汉字+拼音首字母、拼音首字母等股票名称,炒股的人都知道,股票太多,记住所有股票code是不可能的,所以常用拼音首字母查股票。Medcl大佬为我们提供了Pinyin分词器,可以让我们非常方便的使用拼音搜索文档。作为大龄程序员,30多岁了,不需要涉及太多技术,得潜心专研一两个技术,并戒掉浮躁,在项目实践中打磨自己。原创 2022-09-20 11:48:24 · 3702 阅读 · 1 评论 -
【Elasticsearch教程19】IK分词器 ik_max_word、ik_smart
通过上表,可以看出在好处是保存文档时,已经索引尽可能多的词,而在搜索文档时,没有必要对搜索关键字拆分的很细,这样提高了查询的效率。安装IK分词器的教程网上太多了,我这里就不再赘述了。全民制作人,大家好,我是练习时长2年半的个人练习生亚瑟王,喜欢ES、钢琴、鼓励队友。分词器对中文不友好,会将中文分割成一个个汉字。IK分词器的作者对这个项目维护的比较积极,能紧跟ES的最新版本。这1个词条,直接拿"亚瑟王"去匹配文档,可以匹配成功。执行如下命令,看字符串是如何拆分后索引的。说明是"王"这个字匹配到文档的。原创 2022-09-16 18:33:42 · 3827 阅读 · 0 评论 -
【Elasticsearch教程18】Mapping字段类型之text 以及term、match和analyzer
Elasticsearch的text字段类型,适合全文搜索,term和match有很大区别,analyzer分析器只能在text类型上,可以配置自定义的分词器原创 2022-09-06 16:32:45 · 1682 阅读 · 0 评论 -
【Elasticsearch教程17】Mapping字段类型之token_count
token_count一般integer类型,并且是作为text类型的子字段,它接收字符串后,分析出这个字符串在分词后都多少个token原创 2022-09-02 14:59:32 · 601 阅读 · 0 评论 -
【Elasticsearch教程16】Mapping字段类型之join以及has_parent has_child查询
一个parent可以有多个child一个child只能有一个parent如果我们用关系型数据库(如MySQL),我们还是挺熟悉如何设计表的。一个主表,一个子表,两个表可以用join、left join、right join做关联查询。nested,子属于父的某一个nested字段里,子属于父的一部分,父和子在同一文档里。join,子和父在同一index里,但不在同一文档里,父和子都是独立的文档。join类型父子文档必须在同一分片上nested类型,之前的博客Mapping字段类型之nested。原创 2022-09-01 18:34:41 · 1658 阅读 · 0 评论 -
【Elasticsearch教程15】Mapping字段类型之search_as_you_type
search_as_you_type会自动对词拆分。那这里要求“建行”能匹配到"建设银行",而"中油"不能匹配到"中国石油",我个人认为可以用到同义词这个功能,把"建行"设置为"建设银行"的同义词。比如没有设置"中渔"为"中水渔业"的同义词,那么就不会根据"中渔"搜索到"中水渔业"。而对于股票名称查询可以参考我之前的博客。上查询时,关键词的前后顺序是不会变的。的结果很多,表格放不下,可以通过下面语句查看。字段类型确实方便,可以先看官网文档。...原创 2022-08-31 17:47:51 · 828 阅读 · 0 评论 -
【Elasticsearch教程14】Mapping字段类型之range
range字段类型表示一个字段的值是一个数值范围例如一个range类型的字段的值是[10, 20],用12来匹配该字段,则会命中该文档.range类型说明[-231, 231-1 ]long_range[-263, 263-1]单精度、符合IEEE 754标准的浮点数的范围双精度、符合IEEE 754标准的浮点数的范围date_range日期范围, 在es内部,日期以64位long类型表示的毫秒数存储ip_rangeIP范围, 支持IPv4和IPv6的范围。...原创 2022-08-31 17:20:55 · 654 阅读 · 0 评论 -
【Elasticsearch教程13】Mapping字段类型之nested
在上一篇博客Mapping字段类型之object中,已经验证了用object类型存放对象数组是不可取的,因为object会把多个对象进行扁平化存储。nested类型能够存放对象数组,每一个对象会单独存储,所以可以在nested类型上进行查询、聚合和排序等操作。然而nested一个文档最多有50个nested类型的字段一个文档所有nested类型的字段存储文档最大数量是10000条。...原创 2022-08-31 15:12:30 · 1621 阅读 · 0 评论 -
【Elasticsearch教程12】Mapping字段类型之object
在一个字段存储一个JSON对象,可以选择object类型,在一个字段存储多个JSON对象,可以选择nested类型原创 2022-08-31 05:18:28 · 2168 阅读 · 0 评论 -
【Elasticsearch教程11】Mapping字段类型之日期时间date date_nanos
JSON没有date类型,但我们可以把以下类型作为日期时间存入ES。类型说明字符串日期格式的字符串,如"2015-01-01"或"2015/01/01 12:10:30"长整型从开始纪元(1970-01-01 00:00:00 UTC)开始的毫秒数整型从开始纪元(1970-01-01 00:00:00 UTC)开始的秒数上面的UTC(Universal Time Coordinated) 叫做世界统一时间,中国大陆和 UTC 的时差是 + 8 ,也就是 UTC+8。在ES内部,时间以。...原创 2022-08-30 18:02:00 · 5283 阅读 · 1 评论 -
【Elasticsearch教程10】Mapping字段类型之数字Numbers
ES的数据类型有很多种,为了`提高性能`和`减少存储空间`,选择一个足够用的类型就OK了,没必要选择过长的类型。比如各地人口数量,一般用integer存储足够了,没有必要使用long类型。原创 2022-08-30 16:56:32 · 1214 阅读 · 0 评论 -
【Elasticsearch教程9】Mapping keyword的ignore_above
对于`keyword类型`, 可设置`ignore_above`限定字符长度。超过 `ignore_above` 的字符会被存储,但不会被倒排索引。比如`ignore_above=4`,”abc“,”abcd“,”abcde“都能存进ES,但是不能根据”abcde“检索到数据。......原创 2022-08-30 16:50:40 · 758 阅读 · 0 评论 -
【Elasticsearch教程8】Mapping字段类型之keyword
Elasticsearch keyword constant_keyword wildcard类型原创 2022-08-29 23:06:40 · 5606 阅读 · 0 评论 -
【Elasticsearch教程7】Mapping字段类型之boolean
boolean类型非常简单,它就接受真或假原创 2022-08-26 16:56:17 · 853 阅读 · 0 评论 -
【Elasticsearch教程6】Mapping字段类型之二进制binary
其实在ES中,能用到binary的场景很少,如果这二进制的值大小比较大,存ES中,会对ES的查询性能有很多的影响。原创 2022-08-26 16:19:40 · 1453 阅读 · 0 评论 -
【Elasticsearch教程5】Mapping 动态模板 Dynamic templates
动态模板(Dynamic templates)可以满足我们需求,在创建mapping时,先定义好规则,当新字段满足某条规则时,就会按照该规则的预先配置来创建字段。原创 2022-08-26 14:31:38 · 1150 阅读 · 0 评论 -
【Elasticsearch教程4】Mapping 动态映射
在实际企业开发中,都会提前设置好mapping的,不会完全让ES自动设置字段类型的。但是掌握好动态字段映射还是很重要的,是学习mapping的前提条件。在字段类型比较确定时,可以先设置好mapping,再插入数据,有新字段时,先给mapping添加新的字段设置在字段的个数和类型都不确定时,可以使用mapping的动态模板,按照已经指定的规则设置它的类型。比如某个字段名为int_age,就让类型为integer,字段名为就设为float。好好学习,天天向上,下一篇博客会写mapping的动态模板的内容。原创 2022-08-25 13:02:59 · 1838 阅读 · 0 评论 -
【Elasticsearch教程3】查询文档 term terms terms_set
term查询判断某个字段是否包含一个确定的值。一般都是用在keyword、int,long、ip、date等类型上原创 2022-08-23 17:49:30 · 953 阅读 · 0 评论 -
【Elasticsearch教程2】 更新文档 painless script案例
是Elasticsearch的默认脚本语言,它具有像 Groovy 那样的语法。把需要更新的字段放到doc里面,已有的字段会更新,新的字段会添加进文档。再次查询id=1的文档发现age的值改变了,并且添加了新的字段word。当act数组中不存在“圣剑裁决”时,才添加“圣剑裁决”当act数组中存在“圣剑裁决”时,才删除“圣剑裁决”当id=2的文档不存在时,会创建该文档。当文档不存在时,更新会报错,可以设置。下面就先写些更新文档的例子,用。对数值类型进行数学计算。根据查询条件,将文档的。原创 2022-08-23 11:51:08 · 1025 阅读 · 0 评论 -
【Elasticsearch教程1】 创建文档
当使用Spring Data Elasticsearch时,可以使用。ES创建文档可以通过如下4种API,它们看着类似,功能上少许不同。:数据流的情况比较复杂,学习先以索引为主,熟练后再考虑数据流场景。用POST插入一个文档,不指定ID,会给文档自动生成ID。运行结果如下,可看出新创建的文档的ID是自生成的一串乱码。在用ES原生Java API创建文档时,可以设置。,说明当id已经存在时,会返回错误。表示创建一个新的文档,如果指定的。运行结果如下,可看出文档被覆盖了。来指定是Create文档的操作。原创 2022-08-22 14:21:09 · 1610 阅读 · 0 评论 -
Elasticsearch教程(35) ik中文分词器+pinyin拼音分词器+同义词
ik分词器+pinyin分词器+同义词 股票名称搜索原创 2022-07-29 18:49:27 · 3934 阅读 · 7 评论 -
Elasticsearch教程(34) 中文ik分词器 pinyin 首字母 search_as_you_type 组合使用
中文ik分词器 pinyin 首字母 search_as_you_type 组合使用1. 前言2. 中文2.1 ik分析器2.1.1 用ik_smart分析2.1.2 用ik_max_word分析2.2 standard分析器2.2.1 创建测试数据2.2.2 match简单搜索2.2.3 match搜索,设置operator2.3 search_as_you_type字段类型2.3.1 search_as_you_type简单使用2.3.2 search_as_you_type和match设置oper原创 2021-09-30 15:11:01 · 1651 阅读 · 3 评论 -
Elasticsearch教程(33) ES优化总结
这里暂不考虑ES的集群优化,一般在公司里有专门的运维去维护和优化ES集群,而且每个客户现场的硬件条件各不相同,不好强求客户去升级他的硬件。这里只是从开发和设计人员的角度去看如何尽量提高ES的性能,避免掉进常见的坑。优化设计● 要理解mapping的字段属性,知道如何选择text还是keyword还是int,枚举字段用keyword● 不要对text类型排序聚合,不要设置fielddata=true,应使用复合字段,ES6后指定预排序● 知道字段是否要索引,index属性,例如备注remark●原创 2021-06-30 10:57:14 · 502 阅读 · 0 评论 -
Elasticsearch教程(32) ES 聚合查询后过滤 Distinct Group By Having功能
一、之前写的关于ES聚合的博客Elasticsearch教程(3) ES聚合查询DSLElasticsearch教程(4) High Level REST Client API 查询 聚合 分组Elasticsearch教程(5) 指标聚合 SQL DSL JavaAPIElasticsearch教程(6) 桶聚合Query DSL-Terms AggregationElasticsearch教程(10) ES term terms prefix 搜索 聚合查询 详细总结Elasticsearc原创 2021-03-25 21:20:45 · 9488 阅读 · 11 评论 -
Elasticsearch教程(31) es mapping参数doc_values enabled ignore_above norms store详解
不当人了,熬夜肝出《屎上醉拳mapping全26种参数详解》一、前言二、Mapping的设置1. 创建Index的Mapping2. 添加新的字段3. 修改已存在字段的mapping4. 查看mapping三、Mapping参数1. analyzer2. boost3. coerce4. copy_to5. doc_values6. dynamic7. eager_global_ordinals8. enabled9. format10. ignore_above11. ignore_malformed12原创 2021-02-26 17:48:54 · 2295 阅读 · 2 评论 -
Elasticsearch教程(30) pipeline处理 painless script脚本详细总结 查询更新案例
ES Script脚步详解原创 2021-02-25 18:22:33 · 2101 阅读 · 0 评论 -
Elasticsearch教程(29) update by query的Script脚步更新 Java API 支持es5.6 es6.8 es7.8
一、前言最近发现要经常根据查询条件来更新字段的值,公司的es有5.6 6.8 7.8这3个版本,之前是将数据查询出来,修改好其中的值,然后再保存进es的,感觉这样很费事。由于用的是es原生Java API,又要支持多个版本的es,所以只能自己写代码了。如果用Spring Data ES的话,那里面的方法很全面很方便,可惜公司的并不用。二、ES5.6 Java API的实现ES5.6 Java API的High Level实现,通过测试,链接ES5.6 ES6.8使用都可以。public stat原创 2021-02-24 18:18:39 · 1865 阅读 · 0 评论 -
Elasticsearch教程(28) text和keyword区别 term和match区别 ik中文分词器使用
text和keyword区别 term和match区别 ik中文分词器使用一、前言二、之前相关的博客三、造点测试数据1. 创建一个index2. 插入测试数据四、做一份试卷第1题:title term "宝贝"的结果?第2题:title term "宝宝"的结果?第3题:title term "宝"的结果?第4题:title term "ABC"的结果?第5题:title term "abc"的结果?第6题:title match "宝贝"的结果?第7题:title match "宝宝"的结果?第8题:ti原创 2021-02-24 17:24:45 · 1067 阅读 · 1 评论 -
Elasticsearch教程(27) ES拼接查询条件的工具类
ES拼接查询条件的工具类一、前言二、工具类三、测试四、总结一、前言在大多数公司产线Elasticsearch还在6.X的时候,ES已经更新到7.10.1了,这更新速度。目前我手上的项目也做到一套工具类兼容ES6.1到ES7.9+。我用的是原生的ES6.8.12的Java API来实现的工具类。目前功能上线几个月没有出过错。工作中用ES查询大于插入,所以代码里到处都是拼接ES查询条件的语句,ES本身的Java API已经很强大了,我们利用BoolQueryBuilder和QueryBuilders可以原创 2020-12-29 18:06:58 · 5347 阅读 · 36 评论 -
Elasticsearch教程(26) mapping参数doc_values fielddata enabled
mapping参数doc_values fielddata enabled index norms coerce1 前言2 正排索引3 倒排索引4 doc_values5 fielddata6 coerce7 enabled8 index9 norms1 前言Elasticsearch的mapping字段类型非常丰富, 字段类型还有很多参数可设置, 知晓这些参数, 可以优化提高ES存储空间和性能.在学习mapping的参数配置前, 先大致了解下正排索引和倒排索引.我水平有限, 可参考大佬的博客Doc原创 2020-09-25 09:53:55 · 1543 阅读 · 0 评论 -
Elasticsearch教程(25) 详解mapping之nested
Elasticsearch详解mapping之nested1 前言2 创建nested字段的mapping3 插入测试数据4 nested查询5 nested聚合分析1 前言在工作开发中, 我们常遇到2张表示1对多的关系,这样的父子结构, 如果用MySQL存的话,子表设一个字段parentId存储父表的id,这样就可以用join关联查询.那么ES作为NoSQL,它有更便捷的存储方式来保存父子结构:第一种:join字段类型,子文档包含父文档ID,可用has_parent和has_child来查询第原创 2020-09-10 16:38:32 · 3743 阅读 · 0 评论 -
Elasticsearch教程(24) 详解mapping之object
Elasticsearch详解mapping之object1 举例: 传统数据库存对象数据2 ES存对象数据2.1 创建mapping2.2 插入数据2.3 查询object对象数据3 注意点: object类型不要存对象数组3.1 存入对象数组3.2 验证错误的查询结果elasticsearch支持某个字段存储一个JSON对象, 这个字段类型就是object.1 举例: 传统数据库存对象数据假设有一个人员信息如下:{ "region": "US", "manager": { "原创 2020-09-10 14:20:57 · 2395 阅读 · 8 评论 -
Elasticsearch教程(23) 详解mapping之range
Elasticsearch详解mapping之range1 简介1.1 区间的开闭2 实验2.1 创建一个新的索引2.2 新增测试文档2.3 使用term查询匹配2.4 使用range查询匹配1 简介range字段类型表示一个字段的值是一个数值范围.例如一个range类型的字段的值是[10, 20], 那么用12来匹配该字段,则会命中该文档.range字段类型如下:类型说明integer_range[-231, 231-1 ]long_range[-263, 26原创 2020-09-02 15:40:13 · 1086 阅读 · 0 评论 -
Elasticsearch教程(22) 详解mapping之数值类型
Elasticsearch详解mapping之numeric1 简介2 实验2.1 创建一个新的索引2.2 插入正确的数据2.3 插入越界的数据2.4 给整数赋值浮点数2.5 给整数赋值浮点数的字符串1 简介ES支持如下数字类型类型说明byte8位,-128 ~ 127short16位,-32768 ~ 32767integer32位,-231 ~ 231-1long64位,-263 ~ 263-1float单精度、32位、符合IEEE 754原创 2020-09-02 10:56:12 · 911 阅读 · 0 评论 -
Elasticsearch教程(21) 详解mapping之boolean
Elasticsearch 详解mapping之boolean1 简介2 创建boolean类型的字段3 新增数据记录4 验证boolean类型查询4.1 查询is_published=true4.2 查询is_published=false4.3 对于null和缺失字段1 简介boolean类型非常简单,它就接受真或假。判断ES接受的值真true,“true”假false,“false”, “”(空字符)2 创建boolean类型的字段创建一个books索引,n原创 2020-08-31 17:44:12 · 1912 阅读 · 6 评论 -
Elasticsearch教程(20) 详解mapping之date date_nanos
Elasticsearch 详解mapping之date原创 2020-08-31 15:41:28 · 4543 阅读 · 0 评论 -
Elasticsearch教程(19) 详解mapping之keyword
详解mapping之keyword1 前言2 核心类型2.1 关键词:keyword2.1.1 适合用keyword的例子2.1.2 说明2.1.3 实验2.1.4 手动设置mapping2.1.5 ignore_above是什么?1 前言本文基于ES7.6,如果是之前版本,是有区别的。ES支持的字段类型很多,但工作中常用的也就那些核心字段。 一开始学习ES时,掌握好常用的类型,不必要精通每一种,如果工作中遇到了需要用到特殊类型再去研究。学习一门技术要先广度后深度,不能陷入”只见树木,不见森林“。原创 2020-08-28 18:10:15 · 8851 阅读 · 5 评论 -
Elasticsearch教程(18) reindex 重建索引,非常实用的功能
elasticsearch reindex 重建索引1. 简单的reindex2. 只创建目标索引中缺少的文档3. 设置批次大小4. 遇到冲突继续5. 只reindex符合条件的数据6. 只同步源index里部分字段7. 屏蔽掉不想同步的字段8. 用script脚本在同步时做数据处理9. 字段重新命名reindex功能是es的一个非常方便实用的功能,在工作中备份数据比较方便。比如:要对现场的数据进行操作,怕搞乱了,可以先用reindex备份一下当前表的mapping设置不合理,但是又不能修改,rei原创 2020-08-26 17:49:04 · 9299 阅读 · 5 评论 -
Elasticsearch教程(17) 返回结果过滤 _source_includes和_source_excludes使用
ES返回结果过滤 _source_includes和_source_excludes原创 2020-08-26 14:29:27 · 10928 阅读 · 5 评论