Elasticsearch
es从入门到精通,从单机到集群,从本地到生产,学习心得
绅士jiejie
理想的生活,就是生活的理想!
展开
-
ES报Connection reset by peer
ES报Connection reset by peer原创 2022-11-19 10:46:31 · 1333 阅读 · 0 评论 -
查看ES的index生成时间
查看ES的index生成时间原创 2022-10-15 10:09:59 · 3755 阅读 · 0 评论 -
自定义一个下划线分词器
自定义一个下划线分词器原创 2022-07-31 17:59:59 · 228 阅读 · 0 评论 -
Elasticsearch重建索引报504
Elasticsearch重建索引报504原创 2022-07-29 22:32:00 · 875 阅读 · 0 评论 -
high-level-rest-client 判断索引是否存在
high-level-rest-client 判断索引是否存在原创 2022-07-29 22:29:53 · 1215 阅读 · 0 评论 -
ES实例化RestHighLevelClient时指定用户名和密码
ES实例化RestHighLevelClient时指定用户名和密码原创 2022-07-16 15:09:39 · 4877 阅读 · 0 评论 -
RestHighLevelClient获取某个索引的mapping
RestHighLevelClient获取某个索引的mapping原创 2022-07-02 21:10:41 · 1769 阅读 · 0 评论 -
OpenJDK 64-Bit Server VM warning_ UseAVX=2 is not supported on this CPU, setting it to UseAVX=0
OpenJDK 64-Bit Server VM warning_ UseAVX=2 is not supported on this CPU,原创 2022-04-04 09:45:03 · 848 阅读 · 0 评论 -
from + size must be less than or equal to: [10000] but was [10550]
以上错误是ElasticSearch分页搜索时出现的,这是因为ES默认支持的最大条数就是10000条,深度分页导致总条数超过10000,就会报这个错。解决方法1.调整索引的配置项index.max_result_window,如下:PUT index_name/_settings{ "index.max_result_window":10000}调成符合自己业务的数字即可。2.从业务上限制一般来说,用户搜索大多是看前几页数据就好了,毕竟有个匹配分数,越后面的匹配度越低,即使是电商商原创 2021-02-02 21:31:31 · 2252 阅读 · 0 评论 -
index和create区别
index操作会覆盖文档,而create操作则不会。原创 2021-01-01 21:35:27 · 611 阅读 · 0 评论 -
如何让ElasticSearch新增文档时,如果文档存在,不覆盖
使用opType方法设置新增模式,如下:使用示例:request.opType(DocWriteRequest.OpType.CREATE);原创 2021-01-01 21:24:17 · 1209 阅读 · 1 评论 -
No validator could be found for constraint ‘javax.validation.constraints.NotBlank‘ validating type
报如上异常的原因是因为在Integer类型的字段上使用@NotEmpty注解,但是其实这个注解支持的是String类型,所以就报错了。解决方法:换成@NotNull注解就可以解决了。PS:所以见到这个异常,要第一时间想到是不是该校验注解所支持的数据类型与其修饰的实体字段类型不对应。...原创 2020-12-26 21:33:05 · 5831 阅读 · 0 评论 -
使用filter还是使用query
filter:不会计算相关度分数,性能更好, 无排序,同时ES内部还会缓存比较常用的filter的数据。query:会计算相关度分数,性能较差,有排序,无缓存。所以其实总结下,需要做全文本搜索或者需要计算相关性分数时,就用query,否则就优先用filter。...原创 2020-12-26 21:21:50 · 198 阅读 · 0 评论 -
ES使用completion类型做自动建议时,建议多开一个子字段
ES使用completion suggest做自动建议时,建议多开一个子字段,如下示例,假设要根据title字段做自动建议,那么该字段的类型就得改为completion,不过建议不要改原字段的类型,多开一个子字段title.suggest,类型设置为completion,然后之后的suggest针对title.suggest字段做操作就好,参考mapping如下: "title": { "type": "text", "analyzer": "ik_max_word"原创 2020-12-22 22:44:05 · 2740 阅读 · 6 评论 -
ElasticSearch搜索时不算分API
有时候,使用ES做搜索,不是每个搜索场景都需要算相关性得分的,如果能够手动的减少算分这一步,搜索性能也会因此得到提升,而使用ConstantScoreQueryBuilder可以起到不算分的效果,它的构造方法如下://构建BoolQueryBuilderBoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();////。。。中间构建一连串的搜索条件//构建不算分的ConstantScoreQueryBuilde,关键就是这步Constan原创 2020-12-22 22:31:14 · 918 阅读 · 1 评论 -
了解一下nested数据类型
假设一个索引里要存一个对象数组,如下:PUT my-index/_doc/1{ "group" : "fans", "user" : [ { "first" : "John", "last" : "Smith" }, { "first" : "Alice", "last" : "White" } ]}如上,有两个user对象,一个叫John Smith,一个叫Alice White。然后以上数据会被原创 2020-08-15 11:37:21 · 1343 阅读 · 0 评论 -
Elasticsearch exception [type=circuit_breaking_exception, reason=[parent] Data too large, data
以上异常原因是field data 的缓存不够用修改方法,向Elasticsearch发送如下请求,设置fielddata缓存占用jvm内存的40%或者更小:之后再发送请求即可成功。原创 2020-08-13 23:57:14 · 5615 阅读 · 2 评论 -
ElasticSearch自定义词库
由于网络词语层出不穷,ik分词器有时并不能完全识别网络词汇,如下:按照网络词语,乔碧萝应该被识别为一个词语,而不是被拆分成三个。所以这时需要自定义词库来解决以上问题。自定义词库自定义扩展词库的主要使用思路就是,先自定义扩展词库,然后修改ik分词器的配置文件,指定该扩展词库,这样在ik分词器就可以向远程发送请求,获取到自定义扩展词库里的一些新单词,然后以这些新单词为词源做解析。自定义词库有两种方式:实现一个服务,专门用来处理ik分词器的请求,让ik分词器给该项目发送请求。使用nginx服原创 2020-08-12 12:19:12 · 3390 阅读 · 0 评论 -
ElasticSearch安装ik分词器
先看看ik分词器版本与ES版本的对应情况,如下:git clone太慢的解决方法原创 2020-08-11 10:44:30 · 418 阅读 · 0 评论 -
mapper [userName] of different type, current_type [text], merged_type [keyword]
111原创 2020-01-10 16:29:13 · 8331 阅读 · 8 评论 -
Fielddata is disabled on text fields by default. Set fielddata=true on [usrName]
使用spring boot+ElasticSearch做数据聚合时,报了该异常:Fielddata is disabled on text fields by default. Set fielddata=true on [usrName]原创 2020-01-10 16:24:39 · 1128 阅读 · 0 评论 -
Invalid index name [userInfo], must be lowercase
org.elasticsearch.indices.InvalidIndexNameException: Invalid index name [userInfo], must be lowercaseelasticsearch的索引名不支持小写,改成小写就好。原创 2019-09-17 16:51:08 · 1514 阅读 · 0 评论 -
本地Cerebro-ES集群可视化管理工具安装
下载地址:https://github.com/lmenezes/cerebro/releases修改config下的appliaction.conf文件,name改成自己的集群名进入cerbero目录运行:bin/cerebro效果如下:原创 2019-09-14 19:51:42 · 557 阅读 · 0 评论 -
本地Kibana安装和汉化
一.安装Kibana下载网址:https://www.elastic.co/cn/downloads/past-releases#kibana选择自己要用的版本启动Kibana,打开浏览器输入url:127.0.0.1:5601这时界面是英文的二.汉化Kibana打开kibana目录下的config文件夹,里面有个kibana.yml打开kibana.yml,在文件最末尾,加上...原创 2019-09-14 18:08:08 · 830 阅读 · 0 评论 -
本地运行elasticsearch多实例
bin/elasticsearch -E node.name=node1 -E cluster.name=jiejie -E path.data=node1_data -dbin/elasticsearch -E node.name=node2 -E cluster.name=jiejie -E path.data=node2_data -dbin/elasticsearch -E node...原创 2019-09-14 16:23:40 · 510 阅读 · 0 评论 -
本地后台运行elasticsearch,关闭窗口服务不会被终止
终端运行elasticsearch都是先进入es的目录然后执行bin/elasticsearch,但是只要关闭了窗口或者是按了ctrl+z或ctrl+c服务就会stop。后台运行命令:bin/elasticsearch -d这样就可以后台运行了,就是启动时看不到日志,不要慌,等一会就好之后如果要关闭es进程:1.查看端口9200被哪个进程占用sudo lsof -it tcp:port...原创 2019-09-14 15:59:55 · 3276 阅读 · 0 评论 -
elasticsearch的基础概念
1.是什么elasticsearch是一款开源的实时分布式搜索和分析引擎,是在lucence的基础上开发的。也是目前最热门的搜索引擎,之后是Solr。2.做什么在搜索方面的,elasticsearch可以帮助你从海量的数据中找到相应的内容,在大数据分析方面,elasticsearch还可以结合Kibana,Logstash,Beats等插件,在日志分析,指标监控等多个领域使用。3.elas...原创 2019-09-13 18:41:21 · 142 阅读 · 0 评论 -
Elasticsearch文件目录简介
这里简单介绍下es各个目录的用处,先看下es所有目录的截图bin:脚本文件,里面包括启动elasticSearch,安装插件等。config:配置文件目录,里面有个很重要的配置文件elasticsearch.ymljdk:java运行环境lib:java类库logs:日志文件modules:包含所有的es模块plugins:包含所有已经安装的插件data:数据文件...原创 2019-09-13 17:12:52 · 1686 阅读 · 0 评论 -
elasticsearch的基本使用语法(一)
1.查看集群健康状态: GET _cat/health?v2.查看集群中有哪些索引: GET _cat/indices?v3.快速创建一个索引: PUT /index4.删除索引: DELETE /index5. PUT /index/type/id: 指定id快速创建索引,文档6.POST /index/type: 快速创建索引,文档,id由系统自动生成7.GET /...原创 2019-10-02 19:50:43 · 551 阅读 · 0 评论 -
elasticsearch的基本使用语法(二)
这里先给出索引里的所有数据:"hits" : { "total" : { "value" : 5, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "drink", "_type" : "_doc", ...原创 2019-10-02 21:36:48 · 439 阅读 · 0 评论 -
elasticsearch的基本使用语法(三)
一.对某个字段进行分组聚合统计:类似sql的group by二.先搜索再聚合统计三.先分组后求平均值四.先分组后求平均值再倒叙排列五.按区间来分组六.先按区间分组,在按字段分组,在取平均值总计:其实以上都是aggs方法的各种聚合使用方法,无需记忆,理解就好,可以根据需求选择怎么用...原创 2019-10-02 22:41:31 · 177 阅读 · 0 评论 -
elasticsearch局部更新时报x_content_parse_exception
局部更新文档的正确格式:我的理解是,es文档的局部更新其实是在更新时传递一个叫doc的文档对象参数,里面写着你要修改的文档json数据,然后到了es的内部,把旧文档读出来,标记成deleted,文档参数和旧文档做一个数据上的合并,字段相同就覆盖,字段不同就新增,生成新的文档,重新写入es。...原创 2019-10-03 20:30:34 · 11765 阅读 · 2 评论 -
Please use `if_seq_no` and `if_primary_term` instead
旧版本的elasticsearch是用version来解决并发问题,采用乐观锁的方式,比较更新时的version是否相同来决定能不能更新在新版本es再使用version就会报上述问题,而新版本用的是**_seq_no和_primary_term**两个字段来代替version处理并发问题,在查询文档时,这两个字段会返回。所以现在es控制并发问题的做法是:查看结果:更新成功...原创 2019-10-03 21:10:50 · 1158 阅读 · 2 评论 -
elasticsearch的基本使用语法(四)
批量查询,可以减少网络开销,比如将1000次查询合成一次,这样1000次网络请求就变成了1次,性能得到了提升mget:批量查询语法在6.x新版本后,一个索引只能有一个type,所以上述方式可以简写为:————————————————————————————————————————批量操作增删改操作bulk:批量操作增删改这个是因为bulk的语法有严格要求,每个json串里面不能...原创 2019-10-03 22:54:31 · 257 阅读 · 0 评论 -
Elasticsearch主分片不可以修改的原因
Elasticsearch中,一个index一般会有多个主分片(Primary shard),每个主分片存储该索引的一部分数据,一个文档(document)数据,只会在其中一个分片上,所有主分片的文档合并在一起就是整个索引的数据。而每个主分片都会有副本分片(Replica shard),用作数据备份,实现高可用以及提供读功能,当出现高并发大量读请求时,通过协调节点负载均衡,减小服务器压力。这里假...原创 2019-10-06 11:41:12 · 2083 阅读 · 4 评论 -
Elasticsearch分页搜索方式以及deep paging性能问题分析
原数据如下:[ { "_index" : "test", "_type" : "_doc", "_id" : "1", "_score" : 1.0, "_source" : { "test" : "test" } }, { "_...原创 2019-10-06 16:44:56 · 338 阅读 · 0 评论 -
logstash导入oracle数据到Elasticsearch(windows)
一,将oracle表数据导出结果,格式选择csv之后一直下一步,注意不要把标题也导出,在csv文件里我们只要数据。数据如下:二.把csv文件拷贝到logstash的config目录下,放哪都行,配置文件里写对路径就好三.写一个data.conf配置文件,具体参数如下:input { file { #要读取的数据文件的路径 path => "E:/logs...原创 2019-10-09 15:31:33 · 772 阅读 · 0 评论 -
本地Elasticsearch的安装
1.进入https://www.elastic.co/cn/downloads/elasticsearch2.点击红色方框past releases,查看历史版本,这建议不要下载最近的版本,新的版本可能还有些bug没有被发现和修改,我这下的是macos7.1.0的版本,根据系统自己选择。3.下载之后解压,打开终端开启elasticSearch,<0>进入你放es的文件夹中,...原创 2019-09-13 17:02:35 · 333 阅读 · 0 评论