Think_Higher
内存虽快,但不持久,好记性不如烂笔头。
展开
-
古茗科技面试:为什么 ElasticSearch 更适合复杂条件搜索?
ElasticSearch 简介倒排索引联合索引查询跳表合并策略Bitset 合并策略原创 2023-03-20 16:14:11 · 1595 阅读 · 0 评论 -
Elasticsearch 为什么会产生文档版本冲突?如何避免?
召回结果如下:这里的 version 代表文档的版本。当我们在 Elasticsearch 中创建一个新文档时,它会为该文档分配一个_version: 1。当我们对该文档进行任何后续更新(更新 update、索引 index 或删除 delete)时,_version都会增加 1。一句话:Elasticsearch 使用_version来鉴别文档是否已更改。原创 2023-03-09 18:00:05 · 506 阅读 · 0 评论 -
ElasticSearch如何解决深分页问题?
前言From/Size参数Query阶段Fetch阶段深度分页问题Scroll遍历数据基本使用遍历优缺点缺点:优点:」Scroll Scan基本使用Scroll Scan与Scroll的区别Sliced ScrollSearch After基本使用基本原理优缺点总结ES7版本变更性能对比向前翻页总结个人思考原创 2023-03-09 11:47:04 · 466 阅读 · 0 评论 -
ElasticSearch from + size 分页查询过程分析,及其官方ES深度分页性能优化方法
ElasticSearch from + size 分页查询过程分析,及其官方ES深度分页性能优化方法原创 2022-09-30 17:30:49 · 1070 阅读 · 0 评论 -
Elasticsearch中Match_phrase的使用(类似sql like,模糊匹配的短语查询和临近查询)
ElasticSearch 中 match phrase 的使用原创 2022-09-26 13:39:34 · 476 阅读 · 0 评论 -
Redis + ElasticSearch 实现用户多终端共享搜索历史记录
搜索框历史记录功能原创 2022-09-23 15:37:48 · 1022 阅读 · 0 评论 -
ElasticSearch Jest介绍及Springboot中的使用
Jest elasticsearch rest client原创 2022-09-22 17:30:23 · 332 阅读 · 0 评论 -
白话ES 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?
背景ES 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?分析这个问题,包括后面的 redis 什么的,谈到 es、redis、mysql 分库分表等等技术,面试必问!就是你生产环境咋部署的?说白了,这个问题没啥技术含量,就是看你有没有在真正的生产环境里干过这事儿!有些同学可能是没在生产环境中干过的,没实际去拿线上机器部署过 es 集群,也没实际玩儿过,也没往 es 集群里面导入过几千万甚至是几亿的数据量,可能你就不太清楚这里面的一些生产项目中的细节。如果你是自己就原创 2022-03-28 21:47:24 · 1784 阅读 · 2 评论 -
ES 在数据量很大的情况下(数十亿级别)如何提高查询效率?
背景这个问题是肯定要问的,说白了,就是看你有没有实际干过 es,因为啥?其实 es 性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下 5-10s ,坑爹了。第一次搜索的时候,是 5~10s ,后面反而就快了,可能就几百毫秒。你就很懵,每个用户第一次访问都会比较慢,比较卡么?所以你要是没玩儿过 es,或者就是自己玩玩儿 demo,被问到这个问题容易懵逼,显示出你对 es 确实玩儿的不怎么样?说实话,es 性能优化是没有什么银弹的,啥意思呢?就原创 2022-03-27 23:30:17 · 3423 阅读 · 0 评论 -
白话ES写入、查询数据的原理
前言ES 写入数据的工作原理是什么啊?ES 查询数据的工作原理是什么啊?底层的 Lucene 介绍一下呗?倒排索引了解吗?问这个,其实面试官就是要看看你了解不了解 es 的一些基本原理,因为用 es 无非就是写入数据,搜索数据。你要是不明白你发起一个写入和搜索请求的时候,es 在干什么,那你真的是…对 es 基本就是个黑盒,你还能干啥?你唯一能干的就是用 es 的 api 读写数据了。要是出点什么问题,你啥都不知道,那还能指望你什么呢?es 写数据过程客户端选择一个 node 发送请求过去,这个原创 2022-03-27 00:13:35 · 318 阅读 · 0 评论 -
白话ES 的分布式架构原理
背景在搜索这块,lucene 是最流行的搜索库。几年前业内一般都问,你了解 lucene 吗?你知道倒排索引的原理吗?现在早已经 out 了,因为现在很多项目都是直接用基于 lucene 的分布式搜索引擎—— ElasticSearch,简称为 ES。而现在分布式搜索基本已经成为大部分互联网行业的 Java 系统的标配,其中尤为流行的就是 ES,前几年 ES 没火的时候,大家一般用 solr。但是这两年基本大部分企业和项目都开始转向 ES 了。所以互联网面试,肯定会跟你聊聊分布式搜索引擎,也就一定会聊原创 2022-03-24 22:51:28 · 163 阅读 · 0 评论 -
Elastic Search的父子查询之child query
文章目录引子Has child query引子日常生活中有很多类似嵌套查询的例子,举个有趣而且比较好理解的例子,比如我想要采访一个父亲,但是要求他的儿子有三个头六个胳膊。假如我们把我们所有人及其儿女的信息都录入到ES中。那么查询出来的结果一定只有一个,那就是托塔天王,李靖。Has child query...原创 2021-11-03 23:23:25 · 927 阅读 · 0 评论 -
ElasticSearch Join field type 链接关系类型的数据
文章目录Join field type父子关系性能如何?父子关系的限制使用父子关系搜索Join field type链接数据类型是一个特殊的字段,在相同文件的索引中,创建父/子关系。关系部分在文档定义了一组可能的关系,每一个关系有父亲的名字和儿子的名字。一个父子关系的结构定义例子如下:PUT my-index-000001{ "mappings": { "properties": { "my_id": { "type": "keyword" }原创 2021-10-31 21:45:14 · 343 阅读 · 0 评论 -
ElasticSearch 7.x 简体/繁体搜索
需求,在搜索简体的时候,应该也能把繁体字搜出来。因为我们一般很少用繁体字进行搜索,所以本篇文章,仅仅从索引层的analyzer的char_filter入手,在索引的时候,将繁体字转化为简体且存储为简体的索引进行建立,然后搜索的时候就可以使用简体字来搜索。话不多说,来看下具体的流程步骤如何吧。文章目录准备插件下载插件安装插件验证插件插件介绍Analyzer 介绍自定义分析器索引的修改准备插件下载插件es的插件,写起来其实并不难,只要继承了plugin后,然后放在es服务的指定目录,那么es启动的时候就原创 2020-11-23 10:08:03 · 1297 阅读 · 0 评论 -
java.lang.IllegalStateException: Request cannot be executed; I/O reactor status: STOPPED
es7.3.2 运行时候java 客户端报错如下:java.lang.RuntimeException: Request cannot be executed; I/O reactor status: STOPPED at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:796) at org.elasticsearch.client.RestClient.performRequ原创 2020-10-28 20:44:57 · 8055 阅读 · 2 评论 -
java.lang.NoClassDefFoundError: org/elasticsearch/common/xcontent/DeprecationHandler
java.lang.NoClassDefFoundError: org/elasticsearch/common/xcontent/DeprecationHandler报找不到类,这个类应该7.3.2里面的,我pom依赖也没问题编译阶段没问题,到运行时候,有问题,所以到打好的lib包中查看:发现 这个es还是老的包。从pom中查看有问题。将es依赖重新放到项目的根级父类后:并在子模块中,将pom依赖中的版本号干掉,让它自动继承再次打包,查看lib全部ok,重启服务,正常,问原创 2020-10-21 10:21:02 · 7389 阅读 · 3 评论 -
使用Elaticsearch7.x的suggester联想提示、简单实现类似google的联想搜索
suggester联想器就是帮助用户更好地搜索,更快更精准的找到想要的关键字。elasticsearch 提供了内置的suggester模块。并分为了4个主要的suggest方式term suggester词条联想器以编辑距离为基础将text文本提前分析好,然后用于联想。term就是将你索引好的 text按照定义好的分析器(包含tokenizer)分好的。部分主要配置如下:参数解释textsuggest text 文本 ,必须项,也就是用户输入的内容。可以设为为全局字段也.原创 2020-10-15 11:44:28 · 585 阅读 · 0 评论 -
ElasticSearch Snowball token filter
Snowball token filter使用除梗器,对单词进行除梗的过滤器。语言参数可以控制除梗器,有如下的语言可供选择:Armenian, Basque, Catalan, Danish, Dutch, English, Finnish, French, German, German2, Hungarian, Italian, Kp, Lithuanian, Lovins, Norwegian, Porter, Portuguese, Romanian, Russian, Spanish, Swed原创 2020-07-06 15:49:40 · 376 阅读 · 0 评论 -
Elasticsearch中什么是 tokenizer、analyzer、filter ?
Elastic search 是一个能快速帮忙建立起搜索功能的,最好之一的引擎。搜索引擎的构建模块 大都包含 tokenizers(分词器), token-filter(分词过滤器)以及 analyzers(分析器)。这就是搜索引擎对数据处理和存储的方式,所以,通过上面的3个模块,数据就可以被轻松快速的查找。下面讨论下, tokenizers(分词器), token-filter(分词过滤器)以及 analyzers(分析器)是如何工作的?Tokenizers(分词器)分词,就是将一个字符串,按照原创 2020-07-03 11:14:02 · 2912 阅读 · 0 评论 -
elastic search 如何将yellow 状态变为green健康状态
背景原理green状态:每个索引的primary shard和replica shard都是active状态yellow : 每个索引的primary shard都是active状态,但是部分replica shard不是active状态,处于不可用状态red: 不是所有的索引的primary shard都是active状态,部分索引有数据丢失了为什么现在处于一个yellow状态我们现在就一台机器,就启动了一个es进程。相当于就起了一个节点,由于默认的配置是每个index分配5个primary s原创 2020-05-24 13:10:30 · 3163 阅读 · 0 评论 -
elasticsearch query里面的slop选项
slop用过搜索引擎的都知道,输入一个query,然后会出很多联想的词条,如下面:一般来说完全精确短语匹配 或许是过于严格了。也许我们想要包含 “quick brown fox” 的词条也能够匹配 “quick fox,” , 尽管情形不完全相同。我们能够通过使用 slop 参数将灵活度引入短语匹配中。slop 参数告诉 match_phrase 查询词条相隔多远时仍然能将文档视为匹配 。 相隔多远的意思是为了让查询和文档匹配你需要移动词条多少次?我们以一个简单的例子开始吧。 为了让查询 qui原创 2020-05-22 18:26:37 · 1113 阅读 · 0 评论 -
如何将elastic search 的健康状态由红色red变为绿色green
现状查询健康状态curl -XGET 'http://localhost:9200/_cluster/health?pretty'{“cluster_name” : “go”,“status” : “red”,“timed_out” : false,“number_of_nodes” : 1,“number_of_data_nodes” : 1,“active_primary_shards” : 114,“active_shards” : 114,“relocating_shard原创 2020-05-20 16:38:37 · 2111 阅读 · 0 评论 -
elastic search 修改日志级别为warn
案发现场测试同学压测 接口,导致es疯狂超时排查登录es服务器,打开日志,发现全部是超时日志,再往上看发现全是debug级别的日志,而且连每条query语句都打印了出来。.... ....... "max_expansions" : 50, "fuzzy_transpositions" : true, "lenient" : false, "zero_terms_query" : "NONE"原创 2020-05-20 16:39:46 · 1672 阅读 · 0 评论 -
elastic search 日志不打印问题(root用户惹的祸)
案发现场之前测试同学启动es,用了root 没起来报错如下,java.lang.RuntimeException: can not run elasticsearch as root at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.4.1.jar:5.4.1] at org.elasticsearch.bootstrap.Boo原创 2020-05-19 20:11:24 · 1117 阅读 · 0 评论 -
ElasticSearch 5.4.1 PutMapppingRequestBuilder的setSource方法过时
过时的方法:此方法是在创建es索引,type后然后进行document字段定义时候使用替代的新方法:这里多了一个XcontentType,也就是你前面的mappingSource的类型格式,以前项目中默认都是用的json,当然es也做了兼容,目前是这样兼容的。主要是根据你的内容再判断一次。所以直接在setSource的时候,将第二个枚举类(XcontentType是一个枚举类)的参...原创 2020-02-19 18:52:01 · 794 阅读 · 0 评论 -
ES 常用Linux查询命令汇总
一、_cat操作_cat系列提供了一系列查询elasticsearch集群状态的接口。你可以通过执行curl -XGET 'localhost:9200/_cat'=^.^= 获取所有_cat系列的操作 =^.^=/_cat/allocation提供集群各个节点的分片数量(包括主分片及副分片)以及其占用磁盘空间大小的快照/_cat/shards/_cat/shards/{in...原创 2019-12-05 12:01:57 · 3492 阅读 · 0 评论 -
线上工程启动日志不滚动了——通过查看堆栈信息排查的过程(ES批量插入)
背景线上工程启动日志,跑着跑着突然不动了,也没报错,看起来一切正常分析相比以前可用,启动时加用了一个@postconstruct注解的方法,所以,这个类是通过主线程加载的,看main线程的堆栈信息足够了堆栈信息目前main线程处于waiting on conditionJava Stackat sun.misc.Unsafe.park(Native Method) at jav...原创 2019-11-13 20:18:28 · 392 阅读 · 0 评论 -
Java 工程连接 Elasticsearch 报NoNodeAvailableException[None of the configured nodes are available
将 elastic/elasticsearch-5.4.1/config 的默认配置文件elasticsearch.yml改为本地的ip和对应的端口重启es,重启java工程原创 2019-07-08 22:27:40 · 1279 阅读 · 0 评论 -
ElasticsSearch 之 倒排索引
es搜索,倒排索引入门介绍原创 2019-02-28 16:59:26 · 426 阅读 · 0 评论 -
Elastic search N-gram tokenizer
N-gram tokenizerngram 分词器,首先将text文本切分,执行时采用N-gram切割算法。N-grams 算法,就像一个穿越单词的滑窗,是一个特定长度的持续的字符序列。这个适合于那些不太实用空格符的语言,或者有长的复合单词的语言,比如德语。举个例子:默认的, ngram tokenizer对初始化的text文本进行最小长度为1,最大长度为2的处理。POST _analyze{ "tokenizer": "ngram", "text": "Quick Fox"}上原创 2020-07-06 16:12:56 · 1399 阅读 · 0 评论 -
elasticsearch Mapping definition for has unsupported parameters: [raw : {type=keyword}]“}]
一、报错建test_v4索引失败! ElasticsearchStatusException[Elasticsearch exception [type=mapper_parsing_exception, reason=Mapping definition for [an] has unsupported parameters: [raw : {type=keyword}]]] at org.elasticsearch.rest.BytesRestResponse.errorFromX原创 2020-09-21 17:54:09 · 1456 阅读 · 0 评论 -
如何使用elasticsearch对text类型字段进行精准搜索呢?
match 查询是否可行对一个es中的text类型的字段进行精准搜索,可谓有点棘手。最初级的方式就是建立改字段的时候指定属性unanalysed,也就是不分析,那不分析当然可以精准搜了。但是这样一来,搜索除非精准,否则大部分都是无结果。使用match查询,有几率可以将精准搜结果召回,但是不保证100%。curl -X GET "localhost:9200/_search?pretty" -H 'Content-Type: application/json' -d'{ "query": {原创 2020-09-18 18:17:03 · 6264 阅读 · 1 评论 -
为什么 elasticsearch 要避免使用term查询text类型的字段
term 查询能够返回一个查询字段包含精准值的文档例如,你可以用term来查询价格,产品ID,或者一个用户名。curl -X GET "localhost:9200/_search?pretty" -H 'Content-Type: application/json' -d'{ "query": { "term": { "user.id": { "value": "kimchy", "boost": 1.0 } } }原创 2020-09-18 16:26:28 · 2634 阅读 · 0 评论 -
Elasticsearch5.4.1 升级 7.3.2 之路(8) -- 不同机房同义词生效问题
背景同时建立了索引,配置了同义词配置,均在analysis/synoyms.txt文件。通过refresh api刷新analyser后,机房1生效,机房2 不生效。问题排查与运维助理确定后,两个机房节点的文件md5都是一致的,所以没问题。因为我代码两个机房都是一套,所以只能从index的setting和mapping入手排查通过命令:GET /twitter/_settings结果机房1的setting:而机房2的setting:连分片数都取得默认的机房的。原因最开始两个机房原创 2020-09-18 11:45:09 · 220 阅读 · 0 评论 -
elasticsearch 同义词更新,不同集群返回更新节点个数不一样
背景使用命令更新后POST /my-index-000001/_reload_search_analyzers集群1 返回 成功更新6个集群2 返回 成功更新2个原因不要慌,不要以为有的节点更新失败了。真正的原因是:这个api命令并不会在索引的每个分片上进行reload,而是它仅仅在包含索引的分片上reload。因为整体更新肯定会浪费性能,所以仅仅在索引分片所在的数据节点上面更新。(事实上,生效的都是数据节点)。原文 :https://www.elastic.co/guide/en/e原创 2020-09-17 18:03:05 · 327 阅读 · 0 评论 -
Elasticsearch5.4.1 升级 7.3.2 之路(8) -- score 分数为null的处理
文章目录1、使用api得到的score分数为null1、使用api得到的score分数为null但是,直接curl 命令出来结果是:所以, 是java代码写的有问题,查到:因为是自己写了自定义的排序逻辑。这样es就会忽略它的这个score得分。所以,如果想要使用es文本的score得分,可以采用如下的方式:内部使用:...原创 2020-09-15 20:13:52 · 659 阅读 · 0 评论 -
Elasticsearch5.4.1 升级 7.3.2 之路(7) -- curl 命令的改变
文章目录curl get命令需要加头部否则报错curl get命令需要加头部否则报错5.x的curl命令如下:curl -XGET http://localhost:9200/index/_search -d '{ "from" : 0, "size" : 300, "query" : { "bool" : { "should" : [ { "term" : { "an" : { "原创 2020-09-15 20:06:59 · 267 阅读 · 0 评论 -
Elasticsearch: cat nodes API 详解
文章目录前言一、查看节点列表状态二、可选列展示三、排序帮助help更多前言 Elasticsearch 的cat Api 是给那些想在终端以简洁排列整齐格式的人设计的。本文将讲解cat api是如何工作以及在es集群中发挥作用的一、查看节点列表状态GET /_cat/nodes默认情况下,像上面这个命令,不加任何参数。那么api就会返回集群节点的ip地址、堆使用率、内存使用率、以及最近的cpu的负载、节点的角色,是否是主节点、以及节点名称。$ curl localhost:9200/_.原创 2020-09-11 17:57:57 · 2655 阅读 · 0 评论 -
Elasticsearch5.4.1 升级 7.3.2 之路(6) -- 集群配置的改变
节点类型5.x的节点类型中有一个协调节点叫做client类型的,但是7.x都已经 变为默认的了https://www.elastic.co/guide/en/elasticsearch/reference/7.9/modules-node.html#coordinating-node如果配置单纯的 协调节点,只需要将这个配置置空即可,但是这个协调节点个数也不宜过多,以免给master节点带来负担。...原创 2020-09-11 14:55:16 · 280 阅读 · 0 评论 -
Elasticsearch5.4.1 升级 7.3.2 之路(5) --同义词热更新
所谓的es同义词热更新,并不是把文件热更新后,就能立即生效,而是要把同义词文件更新后,再执行一个刷新的命令。https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-reload-analyzers.html#indices-reload-analyzers-api-example返回结果:{ "_shards": { "total": 4, "successful": 3, "fai原创 2020-09-10 20:29:46 · 558 阅读 · 0 评论