Elasticsearch
文章平均质量分 60
@所谓伊人
关关雎鸠,在河之洲。
展开
-
logstatsh数据同步
1.logstash介绍1.1 数据采集logstash是一个插件,将其他地方的数据(如数据库)同步到elasticsearch1.2 以id或update_time作为同步边界 当数据库中的id增长时(前提是数据库使用自增id),es做定时任务时,比较自己数据的id和数据库的id,如果增长了,那就是有新增的数据,那么,再进行同步。以id作为同步边界这种方法只能识别到增长的数据,不能识别到更改的数据。而以update_time作为同步边界,同理,也是定时比较自己的update_...原创 2021-08-13 20:11:22 · 742 阅读 · 0 评论 -
elasticsearch整合springboot(三)
1.文档数据的修改其中,.withId("1002")中的1002是文档id,不是stuId public void updateStuDoc(){ Map<String,Object> sourceMap = new HashMap<>(); sourceMap.put("sign","I am not super man"); sourceMap.put("money",88.6f); sourc.原创 2021-08-12 22:37:01 · 270 阅读 · 0 评论 -
elasticsearch整合springboot(二)
1. 扩展Mapping增加以下三个属性: @Field(store = true) private Float money; @Field(store = true,type = FieldType.Keyword) private String sign; @Field(store = true) private String description;添加数据public void createIndexStu(){ Stu stu = new Stu原创 2021-08-12 18:41:23 · 495 阅读 · 1 评论 -
elasticsearch整合springboot(一)
1.配置文件1.1 加入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> <version>2.2.2.RELEASE</version&.原创 2021-08-12 18:00:06 · 379 阅读 · 0 评论 -
elasticsearch集群(三)
1. elasticsearch集群脑裂现象探讨 我们现在有3台服务器,当主节点服务器1宕机后,就会选举出新的master,如下图,选出服务器2为主节点。 当服务器1恢复后,服务器1有可能不会成为slave,不会加入到原先的集群里,为什么呢?这是因为当服务器满足最小投票人数(也就是1)时,就会成为master,服务器1自己的票投给了自己,那么服务器1就会成为master,这时,就有两个集群了。这就是脑裂现象。 对于不完整的master服务器1来说,此时它里...原创 2021-08-12 10:57:16 · 147 阅读 · 0 评论 -
elasticsearch集群(二)
1.elasticsearch集群分片测试1.1 创建索引,分片数是1,副本数是0五角星代表主节点,圆形代表副节点,此时的分片落在从节点es-node1上。1.2 创建索引b,主分片数是3,副分片数是1,也就是每个主分片对应1个副分片可以看到,粗框的是主分片,细框的是副分片,相同数字的主副分片不可能在同一个节点上1.3 创建索引c,主分片数为5,副分片数为2,即每个主分片对应2个副分片2.elasticsearch集群节点宕机测试目前节点的状态...原创 2021-08-12 10:13:59 · 185 阅读 · 0 评论 -
elasticsearch集群(一)
1.elasticsearch集群的概念粗框代表主分片(shard),细框代表副分片(replica)。shard和replica相同的数字不能在同一台服务器,这个由es去处理。因为:比如shard:1和replica:1都在服务器1上,服务器1如果挂了,那么shard:1上的数据也不会被备份出来。反之,(见下图)若服务器1挂掉,0,1,2,3,4分片还是能对外提供服务,这时,0,3是replica分片。2.搭建elasticsearch集群2.1 首先,删除nodes部署集群的三...原创 2021-08-11 19:14:57 · 355 阅读 · 0 评论 -
批量操作 bulk
1. 基本语法bulk操作和以往的普通请求格式有区别。不要格式化json,不然就不在同一行了,这个需要注意。{ action: { metadata }}\n{ request body }\n{ action: { metadata }}\n{ request body }\n...1.1 { action: { metadata }} 代表批量操作的类型,可以是新增、删除或修改1.2 \n 是每行结尾必须填写的一个规范,每一行包括最后一行都要写,用于es的解析1.3原创 2021-08-11 16:27:32 · 978 阅读 · 0 评论 -
批量查询 _mget
为了提升吞吐量,减少客户端与es服务端的交互,就有了批量查询。_search批量查询:还有一种批量查询是_mget返回数据:{ "docs": [ { "_index": "shop", "_type": "_doc", "_id": "1001", "_version": 4, "_seq_no": 3, "_primary_term": 1, "found": true, "_source": { "id": ...原创 2021-08-11 11:51:18 · 812 阅读 · 0 评论 -
scroll 滚动搜索
1.什么是scroll 滚动搜索? 一次性查询1万+数据,往往会造成性能影响,因为数据量太多了。这个时候可以使用滚动搜索,也就是 scroll 。 滚动搜索可以先查询出一些数据,然后再紧接着依次往下查询。在第一次查询的时候会有一个滚动id,相当于一个 锚标记 ,随后再次滚动搜索会需要上一次搜索的记录id ,根据这个进行下一次的搜索请求。每次搜索都是基于一个历史的数据快照,查询数据的期间,如果有数据变更,那么搜索是不会查到变更了的数据,搜索的内容还是快照。1.1 scroll查询初始化请...原创 2021-08-11 10:59:40 · 643 阅读 · 0 评论 -
理解深度分页
1. 深度分页1.1 请求第9990~10000条之间的10条数据成功请求,没有报错1.2请求9999~10009之间的10条数据报错如下,es指出请求的最大数据不能超过10000,但是我们数据达到了10009。请往下看这是由于es拉取数据是这么拉取的:1.3 深度分页:从每个shard中拉取总数10009条,最后在汇总成30027条数据,再对30027条数据进行排序,然后,再从30027条数据中取出9999-10009之间的10条数据(分页),返回给用户。...原创 2021-08-10 21:54:08 · 2504 阅读 · 0 评论 -
DSL搜索(五)
1. 过滤器post_filter1.1 gt:大于 、lt:小于返回60<money<1000的数据:{ "took": 2, "timed_out": false, "_shards": { "total": 3, "successful": 3, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 4, "relation": "eq" }, "max_s.原创 2021-08-10 18:21:35 · 317 阅读 · 0 评论 -
DSL搜索(四)
1.multi_matchfields:后面跟列名,查询多列返回结果:{ "took": 8, "timed_out": false, "_shards": { "total": 3, "successful": 3, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 5, "relation": "eq" }, "max_score": 7.372511, "hi..原创 2021-08-10 17:00:23 · 187 阅读 · 0 评论 -
DSL搜索(三)
1.match_phrase1.1 会将所查询的内容进行分词,比如将“大学 毕业”分词为“大学”、“毕业”,再进行查询,查询时,“大学”后面必须跟“毕业”,才能被检索到。1.2 “大学”和“研究生”之间至少有三个词,所以slop设置为3,就能查到这条记录;设置成大于等于3的数,也能查找到。slop的含义是词之间要跳过的词的数量。测试二:2.match operatormatch:只要包含所要查询的内容的词汇,就会查询出。这样,我们查询的条件是or,那么我们能不能把条...原创 2021-08-10 15:13:05 · 157 阅读 · 0 评论 -
DSL搜索(二)
1.查询所有1.1查询所有数据 match_all1.2查询某些字段1.3可视化查询在head插件的页面上也可以查询点击基本查询,选择一个索引,选择must,match_all,点击搜索,就能查询所有数据2.分页 from、size共12条数据,第一页第一页返回了10条数据{ "took": 3, "timed_out": false, "_shards": { "total": 3, "successful": 3, "ski..原创 2021-08-10 12:25:44 · 97 阅读 · 0 评论 -
DSL搜索(一)
1.数据准备1.1扩展自定义词库1.2 创建索引shop1.3 为shop索引建立mappings入参json:{"properties": {"id": {"type": "long"},"age": {"type": "integer"},"username": {"type": "keyword"},"nickname": {"type": "text","analyzer": "ik_max_word"},"money": {"type.原创 2021-08-09 22:51:20 · 394 阅读 · 0 评论 -
自定义中文词库
1.用ik中文分词器分析这句网络用语返回的结果没有将“骚年”、“慕课网”放在一起,所以,我们需要自定义中文词库{ "tokens": [ { "token": "骚", "start_offset": 0, "end_offset": 1, "type": "CN_CHAR", "position": 0 }, { "token": "年在", "start_offset": 1, "end_offset": 3, "typ.原创 2021-08-09 19:06:29 · 529 阅读 · 0 评论 -
建立ik中文分词器
1.下载elasticsearch-analysis-ikhttps://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.4.22.上传至linux服务器3.解压unzip elasticsearch-analysis-ik-7.4.2.zip -d /usr/local/elasticsearch-7.4.2/plugins/ik4.进入到/usr/local/elasticsearch-7.4.2/plugins/.原创 2021-08-09 18:39:13 · 99 阅读 · 0 评论 -
分词与内置分词器
1.全局分析2.索引库分析3. standard 分析的结果,大写会转换成小写返回的分析结果:{ "tokens": [ { "token": "my", "start_offset": 0, "end_offset": 2, "type": "<ALPHANUM>", "position": 0 }, { "token": "name", "start_offset": 3, "end_offset".原创 2021-08-09 18:02:48 · 99 阅读 · 0 评论 -
文档乐观锁控制 if_seq_no与if_primary_term
1.修改文档版本现在是72.当有很多用户并发修改文档,那么这时就要根据version来判断版本是否一致,如果一致,则修改用version请求,结果报错:这是因为老版本中支持version,而新版本用if_seq_no与if_primary_term控制版本,也就是乐观锁控制。es在保存数据时,为每个文档分配了_seq_no,_primary_term,可以将_seq_no理解为学号,_primary_term理解为班级3.用if_seq_no与if_primary...原创 2021-08-09 17:33:42 · 592 阅读 · 0 评论 -
文档的基本操作
一、文档的基本操作1.添加文档与自动映射(1)添加文档返回的version:1,第一次创建文档是1,之后修改的话,会累加。如果创建文档时不指定id,那么es会自动分配:(2)自动映射(1)中创建的字段,比如name,自动映射成text类型,id映射成long类型,create_date映射成date类型(3)创建了9条文档,前4条是手动指定了id,后5条是自动生成的id(4)分词查找,只支持英文分词查找(5)不支持中文分词查找中文的...原创 2021-08-09 16:57:29 · 1222 阅读 · 0 评论 -
mappings自定义创建映射
一、mappings自定义创建映射1.postman添加索引,并添加mappings映射text、keyword都是String类型。text,比如一些文字内容要被分词,被倒排索引的话,比如产品的名称、详情、介绍、描述,这种比较大的、长的文本,可以用text;keyword,比如用户的qq号、手机号等,这些用keywords,可以精确匹配到;当然用户的qq号、手机号等也可以用模糊搜索——text类型,完全看自己的需求。"index":true index设置成true,被索引,默认就是tru..原创 2021-08-09 16:57:16 · 1093 阅读 · 0 评论 -
Elasticsearch核心术语与安装、head与postman基于索引的基本操作
一、Elasticsearch核心术语1.核心概念ES -> 数据库索引index -> 表文档 document -> 行(记录)字段 fields -> 列文档以json的形式存在:stu_index{id: 1001,name: jason,age: 19},{id: 1002,name: tom,age: 18},{id: 1003,name: rose,age: 22}2.集群相关分片(shard):把索引原创 2021-08-08 23:03:39 · 241 阅读 · 0 评论