
elasticsearch
文章平均质量分 83
kfcman
这个作者很懒,什么都没留下…
展开
-
ElasticSearch Aggs的一些使用方法
这段代码是关于多层聚合和嵌套域的聚合,来源:https://github.com/elasticsearch/elasticsearch/blob/master/src/test/java/org/elasticsearch/search/aggregations/bucket/NestedTests.java /* * Licensed to Elasticsearch under o...原创 2016-03-30 17:01:23 · 1031 阅读 · 0 评论 -
云平台之多租户
在云领域我们经常会听到一个词:多租户。这个词在不同的语境中有着不同的含义,本文将介绍云平台中的多租户的概念以及实现多租户支持的思路。 什么是租户 刚开始接触这个概念时,你肯定感觉“租户”这个词怪怪的,但如果我们换个词,我相信你马上就有感觉了,这个词就是“客户”(这里的客户指的就是商业上面的客户)。一个租户就是一个客户,比如我们开发的服务是给 XXX 企业使用的,那该企业就是我们的...原创 2015-11-20 14:43:39 · 524 阅读 · 0 评论 -
全文搜索之 Elasticsearch
概述 Elasticsearch (ES)是一个基于 Lucene 的开源搜索引擎,它不但稳定、可靠、快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的。 特性 安装方便:没有其他依赖,下载后安装非常方便;只用修改几个参数就可以搭建起来一个集群JSON:输入/输出格式为 JSON,意味着不需要定义 Schema,快捷方便RESTful:基本所有操作(索...原创 2015-11-20 14:42:42 · 189 阅读 · 0 评论 -
elasticsearch API文档
http://es.xiaoleilu.com/https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/java-docs.htmlhttp://sense.qbox.io/gist/73f6d2f347a08bfe0c254a977a4a05a68d2f3a8dhttps://www.elastic.co...原创 2015-11-06 14:39:59 · 244 阅读 · 0 评论 -
elasticsearch中关系的处理
handling relatioships现实世界里,关系(relationship)是尤其重要的:博客文章包含评论,银行账号有相应的交易,顾客有银行账户,订单也由订单线,而目录则包含文件和子目录。关系数据库便以此而设计——下面这些描述对你来说也并不陌生:每个实体(entity,或者行 row)可以由一个主键唯一识别实体都是正规化了的。对唯一实体的数据只会存储以此,相关的实体...原创 2015-11-06 14:37:16 · 339 阅读 · 0 评论 -
在elasticsearch里如何高效的使用filter [性能优化必看]
这里有一篇很好的文章,很不错,翻译和整理了一下,英文不错的,建议直接看原文:http://euphonious-intuition.com/2013/05/all-about-elasticsearch-filter-bitsets/elasticsearch里面有BOOL filter、AND、OR、NOT filter,这几个看起来很相似,都有什么区别呢?什么时候用bool filte...原创 2015-11-06 10:57:32 · 1189 阅读 · 0 评论 -
ElasticSearch的_all域
ElasticSearch默认为每个被索引的文档都定义了一个特殊的域 - '_all',它自动包含被索引文档中一个或者多个域中的内容, 在进行搜索时,如果不指明要搜索的文档的域,ElasticSearch则会去搜索_all域。_all带来搜索方便,其代价是增加了系统在索引阶段对CPU和存储空间资源的开销。 默认情况,ElasticSarch自动使用_all所有的文档的域都会被...原创 2015-11-05 10:05:09 · 277 阅读 · 0 评论 -
ElasticSearch的部署、同步与调优
ElasticSearch是一个强大的搜索服务器,基于Apache Lucene的全文搜索引擎开发,具有高性能、分布式和零配置的优点。在当前的项目中,我们希望ES能承担亿级文档的搜索,而ES也证明了即便面对这样的数据规模,也能实现十分迅速的搜索响应。概念节点(Node):节点是一个ES的实例,一般一台主机上部署一个节点-集群(Cluster):集群由若干节点组成,和任意节点的通信...原创 2015-11-05 10:04:51 · 110 阅读 · 0 评论 -
ElasticSearch优化的一些方法
1. 多线程程序插入,可以根据服务器情况开启多个线程index 速度可以提高n倍, n>=2 2. 如果有多台机器,可以以每台设置n个shards的方式,根据业务情况,可以考虑取消replias curl -XPUT 'http://10.1.*.*:9200/dw-search/' -d '{ "settings" : { "number_of_shards" ...原创 2015-11-05 10:04:43 · 104 阅读 · 0 评论 -
elasticsearch中字段Doc_values解析
In-memory模式中,fielddata受到heap内存大小限制,虽然这个问题可以通过集群的横向扩容解决——可需要经常增加节点——而且即使加了,你还是会发现在其他一些资源利用不充分的节点上,在排序和聚合查询的时候仍然会消耗你大量的heap空间。fielddata字段数据默认下,会频繁的在内存当中加载。但这不是唯一的方法,在索引数据时,fielddata字段数据还可以被写在磁盘中,这种方...原创 2015-11-05 10:04:33 · 1430 阅读 · 0 评论 -
把 ElasticSearch 当成是 NoSQL 数据库
Elasticsearch 可以被当成一个 "NoSQL"-数据库来使用么? NoSQL 意味着在不同的环境下存在不同的东西, 而erestingly 它并不是真的跟 SQL 有啥关系. 我们开始只会觉得 "可能"而已, 所以细细研究了 Elasticsearch 的各种属性,包括它已经为了成就最具灵活性,可伸缩性和性能优异的分析查询引擎的那些属性.NoSQL 数据库是什么?...原创 2015-11-05 10:04:23 · 208 阅读 · 0 评论 -
elasticsearch插件大全
Elasticsearch扩展性非常好,有很多官方和第三方开发的插件,下面以分词、同步、数据传输、脚本支持、站点、其它这几个类别进行划分。分词插件Combo Analysis Plugin (作者 Olivier Favre, Yakaz)简介:组合分词器,可以把多个分词器的结果组合在一起。Smart Chinese Analysis Plugin (作者 elasticse...原创 2015-11-04 15:23:23 · 77 阅读 · 0 评论 -
elasticsearch三个重要的优化
1、内存优化 在bin/elasticsearch.in.sh中进行配置 修改配置项为尽量大的内存: ES_MIN_MEM=8g ES_MAX_MEM=8g 两者最好改成一样的,否则容易引发长时间GC(stop-the-world)elasticsearch默认使用的GC是CMS GC 如果你的内存大小超过6G,CMS是不给力的,容易出现stop-the-world 建议使用G1 GC 注...原创 2015-11-20 17:34:32 · 103 阅读 · 0 评论 -
elasticsearch文档-字段的mapping
elasticsearch文档-字段的mappingmappingMapping是指定义如何将document映射到搜索引擎的过程,比如一个字段是否可以查询以及如何分词等,一个索引可以存储含有不同"mapping types"的documents,ES允许每个mapping type关联多个mapping定义。显式声明的mapping是定义在index/type级别, 默认不...原创 2015-11-23 18:36:52 · 717 阅读 · 0 评论 -
详解ElasticSearch的store属性
在Elasticsearch创建mapping的时候,需要制定store属性和index属性,对于刚入门es的学者,通常对lucene又不熟悉的人,通常不知道如何设置这两个值。 先来看需求: 在做搜索时,经常会需要对一个分类进行分 组,比如搜索"ipad",需要在平板电脑分类下面统计有多少个商品,在电脑配件下面统计有多少个商品,这种统计数量的需求,我们通常会在 documen...原创 2015-11-24 14:41:29 · 353 阅读 · 0 评论 -
Elasticsearch Aggregation 多个字段分组统计 Java API实现
现有索引数据:index:schooltype:student---------------------------------------------------{"grade":"1", "class":"1", "name":"xiao 1"}{"grade":"1", "class":"1", &quo原创 2016-03-30 10:26:02 · 2267 阅读 · 1 评论 -
elasticsearch的store属性跟_source字段
众所周知_source字段存储的是索引的原始内容,那store属性的设置是为何呢?es为什么要把store的默认取值设置为no?设置为yes是否是重复的存储呢?我们将一个field的值写入es中,要么是想在这个field上执行search操作(不知道具体的id),要么执行retrieve操作(根据id来 检索)。但是,如果不显式的将该field的store属性设置为yes,同时_source...原创 2016-03-18 11:58:24 · 163 阅读 · 0 评论 -
elasticsearch parent-child
package com.prime.demo.util;import java.io.IOException;import java.lang.reflect.Constructor;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java....原创 2016-03-03 11:27:44 · 181 阅读 · 0 评论 -
Elasticsearch Aggregation 多个字段分组统计 Java API实现
现有索引数据:index:schooltype:student---------------------------------------------------{"grade":"1", "class":"1", "name":"xiao 1"}{"grade":"1", "class":"1&原创 2016-01-12 17:35:26 · 4292 阅读 · 0 评论 -
Elasticsearch零停机时间更新索引配置或迁移索引
本文介绍Elasticsearch零宕机时间更新索引配置映射内容的方法,包括字段类型、分词器、分片数等。方法原理就是,利用别名机制,给索引配置别名,所有应用程序都通过别名访问索引。重建索引,通过索引原名将原索引导入新建索引。再为新索引配置相同的别名。确认成功导入后,则删掉老索引。实现配置参数更新。注意: 以下所有操作都是基于一个前提:在建原始索引的时候,给原始索引创建了别名...原创 2015-12-29 11:40:25 · 286 阅读 · 0 评论 -
Elasticsearch 2.1 安装
Elasticsearch requires at least Java 7. Specifically as of this writing, it is recommended that you use the Oracle JDK version 1.8.0_25. Java installation varies from platform to platform so we won’...原创 2015-12-25 16:34:11 · 148 阅读 · 0 评论 -
elasticsearch和lucene4查询语法比较
查询短语在单个字段上: elasticsearch:12 QueryStringQueryBuilder queryBuilder = new QueryStringQueryBuilder("汉语词法或其它汉语语言知识进行分词"); queryBuilder.analyzer("ik").field("title");lucene4:...原创 2015-12-01 17:43:51 · 703 阅读 · 0 评论 -
Mappings in Elasticsearch
虽然都是基于Lucene,Elasticsearch默认运行使用时,是不需要像Solr一样配置索引字段文件的,从开发者角度来看数据结构很灵 活,只需要向数据库提交任意格式的JSON就行了,实际上,Elasticsearh对Lucene的索引文档映射进行了封装,每次提交时都是在原有数据 结构上检查并增加,而且,并不是所有的数据结构改变都能对后续数据生效。这样一来,需要对数据结构进行更多灵活控制时,...原创 2015-12-01 11:41:05 · 220 阅读 · 0 评论 -
ElasticSearch的部署、同步与调优
ElasticSearch是一个强大的搜索服务器,基于Apache Lucene的全文搜索引擎开发,具有高性能、分布式和零配置的优点。在当前的项目中,我们希望ES能承担亿级文档的搜索,而ES也证明了即便面对这样的数据规模,也能实现十分迅速的搜索响应。概念节点(Node):节点是一个ES的实例,一般一台主机上部署一个节点-集群(Cluster):集群由若干节点组成,和任意节点的通信...原创 2015-11-27 10:53:51 · 109 阅读 · 0 评论 -
Elasticsearch - 配置详解
1.1. 基本配置elasticsearch 的config文件夹里面有两个配置文 件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配 置文件,es也是使用log4j来记录日 志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了。下面主要讲解下 elasticsearch.yml这个文件中可配置的东西。clu...原创 2015-11-27 10:52:59 · 133 阅读 · 0 评论 -
ElasticSearch集群部署总结
摘要:世上有三类书籍:1、介绍知识,2、阐述理论,3、工具书;世间也存在两类知识:1、技术,2、思想。以下是我在部署 ElasticSearch集群时的经验总结,它们大体属于第一类知识“techknowledge(技术)”。但其中也穿插一些我个人的理解。敬请指 正。 关键词:ElasticSearch, 搜索引擎, 集群, 大数据, Solr, 大数据 三...原创 2015-11-26 11:44:06 · 375 阅读 · 0 评论 -
动态映射(Dynamic Mapping)
当ES在文档中碰到一个以前没见过的字段时,它会利用动态映射来决定该字段的类型,并自动地对该字段添加映射。有时这正是需要的行为,但有时不是。你或许不知道在以后你的文档中会添加哪些字段,但是你想要它们能够被自动地索引。或许你只是想要忽略它们。或者 - 尤其当你将ES当做主要的数据存储使用时 - 大概你会希望这些未知的字段会抛出异常来提醒你注意这一问题。幸运的是,你可以通过dynamic设置来...原创 2015-11-24 15:13:01 · 842 阅读 · 0 评论 -
使用elasticsearch遇到的一些问题以及解决方法
1.由gc引起节点脱离集群因为gc时会使jvm停止工作,如果某个节点gc时间过长,master ping3次(zen discovery默认ping失败重试3次)不通后就会把该节点剔除出集群,从而导致索引进行重新分配。解决方法:(1)优化gc,减少gc时间。(2)调大zen discovery的重试次数(es参数:ping_retries)和超时时间(es参数:ping_tim...原创 2015-11-04 15:04:04 · 549 阅读 · 0 评论 -
elasticsearch的store属性跟_source字段
众所周知_source字段存储的是索引的原始内容,那store属性的设置是为何呢?es为什么要把store的默认取值设置为no?设置为yes是否是重复的存储呢?我们将一个field的值写入es中,要么是想在这个field上执行search操作(不知道具体的id),要么执行retrieve操作(根据id来 检索)。但是,如果不显式的将该field的store属性设置为yes,同时_sou...原创 2015-11-04 14:47:27 · 683 阅读 · 0 评论 -
Elasticsearch模块功能之-路由(routing)
索引分片分配能够控制索引分片在节点上怎么分布,那对于具体的文档能否控制具体节点的分布呢?答案是可以,根据路由公式shard = hash(routing) % number_of_primary_shards,Elasticsearch使用相同的routing参数来实现这个功能,但我们在创建索引时需如下进行配置: [html] view plain copy"map...原创 2016-07-22 15:44:00 · 289 阅读 · 0 评论 -
elasticsearch通用API,多数据源,分组
公司项目大规模使用elasticsearch,封装了统一的elasticsearchAPI,比较通用,支持多数据源和多层分组查询,可以组合类似MySQL的复杂查询<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xs...原创 2016-07-12 13:53:44 · 456 阅读 · 0 评论 -
Elasticsearch过滤与聚合的先后顺序java实现
一、Elasticsearch的聚合ES的聚合相当于关系型数据库里面的group by,例如查找在性别字段男女人数的多少并且按照人数的多少进行排序,在使用mysql的时候,可以使用如下的句子 [java] view plain copy select sex,count(*) from table_name group by sex order by ...原创 2016-07-07 10:48:21 · 547 阅读 · 0 评论 -
ElasticSearch Java api 详解_V1.0
原英文文档:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/index.html (各个版本的api)这里有一个简单的使用search的官方文档:http://www.elastic.co/guide/en/elasticsearch/client/java-api/current/search.htm...原创 2016-07-07 10:23:06 · 104 阅读 · 0 评论 -
Elasticsearch head插件介绍
datasize: 121Mi (242Mi)docs: 1,526,263 (1,752,062)size:121Mi:表示的是原始数据的总量(242Mi): 标示的是原始数据+副本的总量docs:1,526,263 表示的是数据总量(1,752,062):表示的是未压缩后的数据总量定期压缩索引文件也会提升索引性能后台执行命令如下:curl -XPOST 'http://localhost:9...原创 2016-06-30 16:31:24 · 345 阅读 · 1 评论 -
Elasticsearch 1.7 热更新
搜索是一个需要不停改进的项目,有时我们需要更新分词插件,有时我们想升级ES版本,这些动作的生效都需要重启ES服务。我们当然不希望重启线上服务导致用户无法使用搜索功能,好在ES支持rolling upgrade的方式进行热更新,以下是操作步骤建议:// 1.确保每个Index至少有一份复制分片 // 2.禁止ES的分片动态平衡机制(shard reallocation)...原创 2016-06-07 14:42:16 · 192 阅读 · 0 评论 -
Elasticsearch 搜索服务器全集群升级版本并重启
Elasticsearch 搜索服务器需要一个完整的集群重启,主要版本升级是从0.X至1.x或从1.x的2.x版本到滚动升级不能超过该界限版本的支持。这个过程要一个完整的集群重启进行升级,如下所示:步骤1:关闭分片自动分配当您关闭一个节点,配置过程会立即尝试复制将原本节点集群中的其他节点上的分片,造成I / O的大量浪费。可以通过关闭一个节点之前禁用分配来避免:1 2 ...原创 2016-05-28 21:36:00 · 145 阅读 · 0 评论 -
集群临时重启
集群节点临时重启当修改配置时可能需要重启集群才生效,或者集群发生严重错误无法恢复时都可能需要重启集群一个集群节点重启前要先临时禁用自动分配,设置cluster.routing.allocation.enable为none,否则节点停止后,当前节点的分片会自动分配到其他节点上,本节点启动后需要等其他节点RECOVERING后才会RELOCATING,也就是分片在其他节点恢复后又转移回来,浪费大量时间...原创 2016-05-28 21:17:04 · 98 阅读 · 0 评论 -
elasticsearch之节点重启
Elasticsearch节点重启时背后发生的故事有哪些,应该注意哪些配置内容,本篇文章做一个简单的探讨。节点离开在elasticsearch集群中,假设NodeA因为种种原因退出集群,在NodeA上的Shard分片情况(ShardA是主分片,ShardB是某一分片副本)在存活节点上找到ShardA的副本,将该副本升格为主分片由于ShardB这一分片副本丢...原创 2016-05-24 13:22:04 · 154 阅读 · 0 评论 -
elasticsearch如何安全重启节点
elasticsearch集群,有时候可能需要修改配置,增加硬盘,扩展内存等操作,需要对节点进行维护升级。但是业务不能停,如果直接kill掉节 点,可能导致数据丢失。而且集群会认为该节点挂掉了,就开始转移数据,当重启之后,它又会恢复数据,如果你当前的数据量已经很大了,这是很耗费机器和网络 资源的。 本文转载官方提供的安全重启集群节点的方法:第一步:先暂停集群的shard自动均衡。...原创 2016-05-24 11:58:37 · 196 阅读 · 0 评论 -
Elasticsearch 合理内存分配
Elasticsearch默认安装后设置的内存是1GB,对于任何一个业务部署来说,这个都太小了。如果你正在使用这些默认堆内存配置,你的集群配置可能有点问题。这里有两种方式修改Elasticsearch的堆内存(下面就说内存好了),最简单的一个方法就是指定ES_HEAP_SIZE环境变量。服务进程在启动时候会读取这个变量,并相应的设置堆的大小。举例,你可以用下面的命令设置它export E...原创 2016-05-03 22:45:36 · 158 阅读 · 0 评论