- 浏览: 340377 次
- 性别:
- 来自: 北京
博客专栏
-
Elasticsearch...
浏览量:218539
最新评论
-
不帅sina:
ElasticSearch视频教程网盘地址:https://p ...
elasticsearch 1.x优化 -
不帅sina:
ElasticSearch视频教程网盘地址:https://p ...
Elasticsearch1.x Java教程 -
sp42:
通俗易懂 谢谢哦
Elasticsearch store属性理解 -
donlianli:
litianyi520 写道按照教程上面创建的mapping ...
Elasticsearch1.x Java教程 -
donlianli:
Kogasa 写道大手你好,我看了你的这份教程非常有帮助。我现 ...
Elasticsearch1.x Java教程
文章列表
假如让我设计一个新的系统
- 博客分类:
- 学习总结
前端
假如让我设计一个新的系统,我一定不会使用extjs作为ui。因为大的系统一般都是面向互联网用户的,互联网又会因为南北网络不统一,导致系统网络延迟很大。而且,使用这种富客户端构建的系统,很浪费网络带宽。
假如一个系统的附件或图片很多,我一定会将附件和图片放到一个单独的服务器上面。这样实现动态资源和静态资源的分离,而不是将附件和图片放到数据库,去浪费数据库的性能。
缓存
如果让我做一个超过1万人使用的系统,我一定会非常重视系统的缓存。将一些热数据存储到memcached;为一些常用的检索或搜索结果构建细粒度的缓存,能够很大程度的提高系统性能。
检索或搜索
如果用户对检 ...
想要给elasticsearch安装一个中文分词插件,网上的资料都有点过时。
现在记录一下从源码安装ik插件的过程。
(注:我用的版本是0.90.2)。
1、下载源码
首先去ik的git网站下站源码,网址:https://github.com/medcl/elasticsearch-analysis-ik
下载完源码后,发现没有对应的jar包。我用mvn package,打了一个jar包。
打包后名称最后是:elasticsearch-analysis-ik-1.2.2.jar
2、文件拷贝。
这一步很简单,将jar包拷贝到ES_HOME/plugin/analy ...
Java的垃圾回收真是让人又恨又爱。当今大内存已经成为服务器的趋势,使用CMS垃圾回收有点捉襟见肘。为何要使用g1垃圾回收,我想用过es的人都会很清楚。下面我就介绍一下在elasticsearch中,如何使用G1垃圾回收。
首先找到es的配置文件。elasticsearch.in.sh,这个文件在es的bin目录下面。
然后找到配置垃圾回收的配置。
# Force the JVM to use IPv4 stack
if [ "x$ES_USE_IPV4" != "x" ]; then
JAVA_OPTS="$JAVA_OPTS ...
Elasticsearch的mapping一旦创建,只能增加字段,而不能修改已经mapping的字段。但现实往往并非如此啊,有时增加一个字段,就好像打了一个补丁,一个可以,但是越补越多,最后自己都觉得惨不忍睹了。怎么办??
这里有一个方 ...
在Elasticsearch中找一个复制索引的接口真难。现在官方唯一推荐的方法是使用游标获得被复制索引的所有document,然后使用bulkIndex新建立一个索引。
这个接口也很奇怪,第一次search竟然不返回数据。
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.Client;
import org.elasticsearch.common. ...
通常,在项目中需要联想输入(即输入关键字,提示相关词条,类似百度google的搜索)的需求,可能大家都是用的数据库的like '%关键字%‘来实现。但是这样实现有几个问题。
第一、这样的搜索无论是oracle还是mysql,都是无法使用索引的。在oracle中可能有全文检索可以使用,但是个人感觉效果不是很好。
第二、输入的关键字有like的通病,就是只有保含关键字的词条才会被命中。如果中间加个空格之类的,db就无能为力了。
第三、如果要想对命中结果进行相关度排序,这个在常规数据库是无法做到的。虽然,可以按照命中词条的长度进行升序排序,但是加上排序,性能不是很好。
下面介绍一下使 ...
Elasticsearch中的mapping一旦创建,就不能再修改。但是添加字段是可以的。其实很简单,只需在原来的mapping上面直接新增加一个field,然后重新创建一下mapping就可以了。
原mapping的定义如下:
private static XContentBuilder getMapping() throws Exception{
XContentBuilder mapping = jsonBuilder()
.startObject()
.startObject("test") ...
截止到0.90.x的版本,Elasticsearch已经将connectedNodes从api中去掉,具体代替的方法是什么呢?也没有找到相关的说明。
因此决定自己手工写一个工具类。其实,我们只有通过API去执行一个方法,就可以测试连接是否正常。测试的方法选定为获得集群node的信息。测试代码:
import java.util.Map;
import org.elasticsearch.action.admin.cluster.node.info.NodeInfo;
import org.elasticsearch.action.admin.cluster.node.info.N ...
在之前的一篇文章中,写到如何创建mapping。里面只是简单的创建了一个mapping。其实,这种比较重要并且一旦建立无法修改的操作还是需要仔细规划的。
今天我介绍设置index的分片数量及副本数量,即创建索引的如何指定分片的个数及副本的个数。分片的个数在创建之后是无法再增加和减少的,除非你另外建一个索引库,而副本是可以在运行的时候,动态增加和减少。因此,在创建索引库时,规划好分片(Shard)是非常重要的。
1、如何在创建index时,指定分片的个数?
其实代码也很简单。
Settings settings = ImmutableSettings.settingsBuilde ...
今年一直关注log4j 2,但至今还没有出正式版。等不及了,今天正式向大家介绍一下log4j的升级框架,log4j 2。
log4j,相信大家都熟悉,至今对java影响最大的logging系统,至今仍有很多系统在使用log4j,但毕竟这个版本出的太早 ...
想要在Java API中获得一个mapping 还真困难,以此铭记。
import org.elasticsearch.client.Client;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.metadata.IndexMetaData;
import org.elasticsearch.cluster.metadata.MappingMetaData;
import com.donlianli.es.ESUtils;
public class GetMappi ...
相当于数据库的表结构的定义,elasticsearch的mapping 也很重要。直接关系到性能及搜索结果的准确性。elasticsearch的java api的例子太少,我在这儿就献丑了。
为了说明mapping的定义,我这里定义了一个简单的模型,就ID,type,和catIds 3个属性,重在说明如何使用java api来定义mapping,具体各field应该如何定义,这里不做讨论。
public class TestModel implements Serializable {
private static final long serialVersionUID = 3174 ...
请看一个测试:
1、快速排序100次,然后计算排序一次所需要的时间。
public QuickSort() {
long beginTime = System.nanoTime();
//排100遍
int b[]=a.clone();
for(int i=0;i<100;i++){
quick(b);
}
long total = System.nanoTime() - beginTime;
//181 ...
慎用ReentrantLock
- 博客分类:
- 并发编程
前言:
代码简洁与性能高效无法两全其美,本文章专注于并发程序的性能,如果您追求代码简洁,本文章可能不太适合,本文章属于Java Concurrency in Practice读书笔记。
在java5中,新增加ReentrantLock提供了一种比synchronized更为灵活的锁机制。为啥说灵活,而不是说性能更高呢?ReentrantLock提供的锁功能跟synchronized的功能基本是一致的,就是一翻版的synchronized类。但是它支持可轮询,定时及可中断的机制,所以说它是更灵活的。为啥没说他性能更高呢?因为这个在java6及以上,性能跟synchronized的基本持平。 ...
一、5年工作生活经历
08年毕业于一个很普通的院校。还没有毕业,就已经来北京实习,实习结束后顺利转正。毕业时,朋友给我介绍一媳妇,瞬间感觉无比幸福。当时每月3k,住北京的集体学生公寓,每月才200,一个月下来还 ...