搜索引擎
文章平均质量分 63
es
Chris_Chris_
梦想架构师
展开
-
elasticsearch中的docvalues的作用
elasticsearch的搜索主要是依赖它的倒排索引,倒排索引就是根据词条(term),他把包含term的文档保存在了索引中termdoc_1doc_2doc_3spring✔️无无elasticsearch无✔️无而排序使用的是doc_values当 doc_values 为 fasle 时,无法基于该字段排序、聚合、在脚本中访问字段值当 doc_values 为 true 时,ES 会增加一个相应的正排索引,这增加的磁盘占用,也会导致索引数据速度原创 2021-05-21 23:05:37 · 755 阅读 · 0 评论 -
elasticsearch文档的搜索机制
2.0之前有4种QUERY_AND_FETCHDFS_QUERY_AND_FETCHQUERY_THEN_FETCHDFS_QUERY_THEN_FETCH2.0之后还剩下两种QUERY_THEN_FETCHDFS_QUERY_THEN_FETCH//java中设置SearchType类型SearchRequest searchRequest = new SearchRequest(POSITION_INDEX);searchRequest.setSearchType(Sear原创 2021-05-20 23:26:40 · 137 阅读 · 0 评论 -
elasticsearch如何保证数据一致性
ES5.0以前es在执行一个增删改查的操作的时候可以带上一个参数consistency,这个参数会让es在执行操作之前先检查活跃机器的数量#以前是有indextype这个属性的后面版本要被移除PUT /index/indextype/id?consistency=quorum这里的consistency有几个值one:要求我们这个写操作,只要有一个primary shard是active状态,就可以执行。all:要求我们这个写操作,必须所有的primary shard和replica s.原创 2021-05-20 22:07:29 · 1490 阅读 · 0 评论 -
elasticsearch的段合并机制
es创建一个document的时候会向translog和in memory buffer中写入,为了近实时性,会将buffer中的数据写入到segment,进入了segment的数据才能被搜索到。es默认每秒钟refresh创建一个segment后台将这些小的segment合并成大的segment。每次的文档删除操作,会仅仅标记 Segment 中该文档 为删除状态, 而不会真正的立马物理删除,在段合并的时候不会把已删除的文档拷贝到新的segment中。(上图中两个已经通过flush提交到磁盘原创 2021-05-19 22:23:38 · 636 阅读 · 0 评论 -
elasticsearch写入的原理
es的每一个index可能有多个shard(每个shard是一个Lucence的index),每个shard由多个segment组成,每个segment里面有很多倒排索引。每次新文档创建的时候会归属一个新的segment,不会动原来的segment。每个新文档创建的时候会写入内存(in memory buffer)和事务日志(translog),这时数据还是搜索不到的。es默认每秒钟会执行一次_refresh操作,会将buffer的数据写入一个新的segment,这时候就可以被检索了,同时会清空内存b原创 2021-05-18 23:36:14 · 189 阅读 · 3 评论 -
elasticsearch部分调优策略
写入调优集群首次灌入数据的时候,可以把副本的参数设置成0个,等灌入完毕了以后再调回配置的副本数,这样副本的分片只需要拷贝,节省索引过程让es自动生成doc id。写入doc的时候如果指定了id,es会先查询判断是否需要更新,这里会读取磁盘,如果自动生成id的话就没有这个操作。不需要建立索引的字段的index属性设置为not_analyzed或者no(不分词或者不建立索引)。这样可以降低cpu占用,尤其是binary类型,默认情况下占用CPU非常高,而这种类 型进行分词通常没有什么意义。减少内容的长原创 2021-05-15 17:51:17 · 106 阅读 · 0 评论 -
elasticsearch集群中使用head插件
自行安装nodejs安装phantomjscd /usr/local/wget https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs- 2.1.1-linux-x86_64.tar.bz2安装解压工具并解压yum install -y bzip2tar -jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2修改环境变量vim /etc/profile#添加e.原创 2021-05-14 23:10:40 · 107 阅读 · 0 评论 -
springboot中使用elasticsearch客户端RestClient
创建springboot项目配置pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.2.3.RELEASE</version></dependency><dependency>原创 2021-05-12 22:09:37 · 450 阅读 · 2 评论 -
elasticsearch的智能搜索建议suggester
我们在使用搜索栏的时候,会自动补全或者纠错这样的功能在es中可以使用Suggesters API。Elasticsearch里设计了4种类别的SuggesterTerm Suggester准备索引库创建索引PUT /chatting/{ "mappings": { "properties": { "body": { "type": "text" } } }}POST _bulk/?refresh=true{"index":原创 2021-05-11 00:18:02 · 510 阅读 · 2 评论 -
elasticsearch使用reindex重建索引
创建索引以后,索引的设定和很多固定配置将不能改变,如果需要改变数据结构就需要重建索引Elasticsearch v6.3.1以后支持Reindex API重建索引已有索引库book和book_newbook为源索引,book_new为目标索引整个过程为book重建索引到book_new如果不手动创建book_new的mapping信息,elasticsearch将自动映射数据类型POST _reindex{ "source": { "index": "book" }, "d原创 2021-05-09 17:08:53 · 634 阅读 · 1 评论 -
elasticsearch的指标聚合和桶聚合
造数据# 创建索引库PUT /book{ "settings": {}, "mappings": { "properties": { "description": { "type": "text", "analyzer": "ik_max_word" }, "name": { "type": "text", "analyzer": "ik_max_word" },原创 2021-05-08 21:59:53 · 197 阅读 · 0 评论 -
在elasticsearch中使用DSL查询
DSL由两种子句构成叶子查询子句叶子查询子句 在特定域中寻找特定的值,如 match,term或 range查询。复合查询子句复合查询子句包装其他叶子查询或复合查询,并用于以逻辑方式组合多个查询(例如 bool或 dis_max查询),或更改其行为(例如 constant_score查询)。POST /索引库名/_search { "query":{ "查询类型":{ "查询条件":"查询条件值" } } }查询全部POST /worker_index/_sear原创 2021-05-07 22:11:43 · 489 阅读 · 3 评论 -
elasticsearch中使用地理坐标
地理坐标点需要显式声明对应字段类型为 geo_point创建索引和映射:PUT /test_locations_index{ "mappings": { "properties": { "name": { "type": "text" }, "location": { "type": "geo_point" } } }}添加文档字符串形式PUT /test_locations_inde原创 2021-05-05 18:21:09 · 270 阅读 · 0 评论 -
Elasticsearch基础知识
什么是ElasticsearchElaticsearch简称为ES,是一个开源的可扩展的分布式的全文检索引擎,它可以近乎实时的存储、检索数据。本身扩展性很好,可扩展到上百台服务器,处理PB级别的数据。ES使用Java开发并使用Lucene作为其核心来实现索引和搜索的功能,但是它通过简单的RestfulAPI和javaAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单。ES的作用分布式的搜索引擎分布式:Elasticsearch自动将海量数据分散到多台服务器上去存储和检索全文检索提供模糊搜索原创 2021-05-05 14:16:43 · 242 阅读 · 4 评论 -
elasticsearch在kibana的操作
执行环境在kibana中索引的操作创建索引库语法PUT /索引名称 { "settings": { "属性名": "属性值" } }settings:索引库设置,可以定义索引库的属性 比如分片数 副本数等,这里先不设置判断索引是否存在HEAD /索引名称查看索引单个索引GET /索引名称批量查看GET /索引名称1,索引名称2查看全部索引1GET _all查看全部索引2GET /_cat/indices?vgreen:索引的所有分片都正常分原创 2021-05-05 14:10:35 · 355 阅读 · 4 评论 -
Elasticsearch集成IK分词器
什么是分词器分词器就是把一个文档切分成词语,在分词之后es才能建立倒排索引es内置了多种分词器,但是如果要中文分词,需要自己安装中文的分词器IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。安装IK分词器可以使用elasticsearch的插件管理elasticsearch-plugin来自动安装下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.3.0/elast原创 2021-05-03 20:33:10 · 127 阅读 · 3 评论 -
ElasticSearch图形化界面kibana的安装
ElasticSearch没有自带图形化界面,可以使用可视化插件kibana安装环境:centos7先在root账户下操作下载kibanawget https://artifacts.elastic.co/downloads/kibana/kibana-7.3.0-linux-x86_64.tar.gz解压tar -zxvf kibana-7.3.0-linux-x86_64.tar.gz 移动解压文件并重命名mv kibana-7.3.0-linux-x86_64 /usr/kiban原创 2021-05-03 16:26:44 · 346 阅读 · 0 评论 -
ElasticSearch单节点模式和伪集群模式搭建
安装环境:centos7关闭防火墙systemctl stop firewalld.service安装jdk(省略)查看jdk的环境变量如果jdk的路径是配置在 ~/.bash_profile中的,则最好注释掉因为这里是针对root用户的下载ES :https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz解压 tar -zxvf elasticsearch-7.原创 2021-05-03 13:43:55 · 374 阅读 · 4 评论