在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。
elasticsearch 2.1

elasticsearch 2.1

关于Lucene merge 占用CPU高的问题

ElasticsearchPandaXu 回复了问题 • 6 人关注 • 3 个回复 • 10088 次浏览 • 2020-04-23 12:15 • 来自相关话题

ES聚合时能否同时获取多个字段

Elasticsearchjaychang 回复了问题 • 4 人关注 • 3 个回复 • 12890 次浏览 • 2018-04-09 18:38 • 来自相关话题

使用spark向elasticsearch中写入数据异常

Elasticsearchjoe23_2006 回复了问题 • 6 人关注 • 6 个回复 • 20076 次浏览 • 2018-01-31 13:36 • 来自相关话题

FunctionScore不允许嵌套,那类似 MAX(A, B) + C 这样的分值该怎么处理?

ElasticsearchJea 回复了问题 • 5 人关注 • 2 个回复 • 4389 次浏览 • 2017-07-25 10:39 • 来自相关话题

elasticsearch中的索引跟数据库中的索引有什么区别?

Elasticsearchluc 回复了问题 • 3 人关注 • 2 个回复 • 4173 次浏览 • 2017-06-03 17:18 • 来自相关话题

elasticsearch-spark update field using script返回异常

回复

Elasticsearchggchangan 发起了问题 • 1 人关注 • 0 个回复 • 6993 次浏览 • 2016-09-02 18:53 • 来自相关话题

修改ES索引自动创建规则后,Marvel监控数据采集不全

Elasticsearchmedcl 回复了问题 • 2 人关注 • 1 个回复 • 6411 次浏览 • 2016-08-11 23:40 • 来自相关话题

创建索引时副本(replicas)延迟复制的问题

Elasticsearchmedcl 回复了问题 • 3 人关注 • 1 个回复 • 5011 次浏览 • 2016-07-21 09:10 • 来自相关话题

禁止shard allocation,滚动重启ES节点后,原来的分片都变成了Unassigned状态

Elasticsearchnihao 回复了问题 • 3 人关注 • 1 个回复 • 8042 次浏览 • 2016-07-13 18:36 • 来自相关话题

ES2.1中@timestamp的mapping冲突

Elasticsearchsp42 回复了问题 • 4 人关注 • 4 个回复 • 11200 次浏览 • 2016-06-29 13:38 • 来自相关话题

ElasticSearch 2.x java client 如何从SearchResponse中获取_routing

回复

Elasticsearchlilin 发起了问题 • 1 人关注 • 0 个回复 • 7480 次浏览 • 2016-05-27 20:01 • 来自相关话题

ES2.0后怎么支持thrift?

回复

Elasticsearchskyspasser 发起了问题 • 1 人关注 • 0 个回复 • 4671 次浏览 • 2016-05-04 09:10 • 来自相关话题

ElasticSearch插件集

Elasticsearchkl 发表了文章 • 0 个评论 • 12252 次浏览 • 2016-03-30 18:07 • 来自相关话题

ElasticSearch的很多功能都是官方或第三方基于ElasticSearch的AbstractPlugin类实现的插件来提供的,所以,在里里记录下一些常用的及实用的插件地址,以备不时之需 分词插件 Combo Analysis Plugin (作者 Olivier Favre, Yakaz) 简介:组合分词器,可以把多个分词器的结果组合在一起。 Smart Chinese Analysis Plugin (作者 elasticsearch 团队) 简介:lucene默认的中文分词器 ICU Analysis plugin (作者 elasticsearch 团队) 简介:lucene自带的ICU分词,ICU是一套稳定、成熟、功能强大、轻便易用和跨平台支持Unicode 的开发包。 Stempel (Polish) Analysis plugin (作者 elasticsearch 团队) 简介:法文分词器 IK Analysis Plugin (作者 Medcl) 简介:大名鼎鼎的ik分词,都懂的! Mmseg Analysis Plugin (作者 Medcl) 简介:mmseg中文分词 Hunspell Analysis Plugin (作者 Jörg Prante) 简介:lucene自带的Hunspell模块 Japanese (Kuromoji) Analysis plugin (作者 elasticsearch 团队). 简介:日文分词器 Japanese Analysis plugin (作者 suguru). 简介:日文分词器 Russian and English Morphological Analysis Plugin (作者 Igor Motov) 简介:俄文英文分词器 Pinyin Analysis Plugin (作者 Medcl) 简介:拼音分词器 String2Integer Analysis Plugin (作者 Medcl) 简介:字符串转整型工具。主要用在facet这个功能上,如果facet的field的值是字符串的话,计算起来比较耗资源。可以把字符串映射成整型,对整型进行facet操作要比对字符串的快很多。 同步插件 CouchDB River Plugin (作者 elasticsearch 团队) 简介:CouchDB和elasticsearch的同步插件 Wikipedia River Plugin (作者 elasticsearch 团队) 简介:wikipedia文件读取插件。wikipedia是维基百科的一个离线库,不定期发布最新数据,是以xml形式发布的。这个river读取这个文件来建索引。 Twitter River Plugin (作者 elasticsearch 团队) 简介:twitter的同步插件,可以同步你twitter上的微博。 RabbitMQ River Plugin (作者 elasticsearch 团队) 简介:rabbitmq同步插件,读取rabbitmq上的队列信息并索引。 RSS River Plugin (作者 David Pilato) 简介:定期索引指定一个或多个RSS源的数据。 MongoDB River Plugin (作者 Richard Louapre) 简介:mongodb同步插件,mongodb必须搭成副本集的模式,因为这个插件的原理是通过定期读取mongodb中的oplog来同步数据。 Open Archives Initiative (OAI) River Plugin (作者 Jörg Prante) 简介:可以索引oai数据提供者提供的数据。 Sofa River Plugin (作者 adamlofts) 简介:这个插件可以把多个CouchDB的数据库同步到同一个es索引中。 JDBC River Plugin (作者 Jörg Prante) 简介:关系型数据库的同步插件 FileSystem River Plugin (作者 David Pilato) 简介:本地文件系统文件同步插件,使用方法是指定一个本地目录路径,es会定期扫描索引该目录下的文件。 LDAP River Plugin (作者 Tanguy Leroux) 简介:索引LDAP目录下的文件数据。 Dropbox River Plugin (作者 David Pilato) 简介:索引dropbox网盘上的文件。通过oauth协议来调用dropbox上的api建索引。 ActiveMQ River Plugin (作者 Dominik Dorn) 简介:activemq队列的同步插件,和之前rabbitmq的类似 Solr River Plugin (作者 Luca Cavanna) 简介:solr同步插件,可以把solr里面的索引同步到es CSV River Plugin (作者 Martin Bednar) 简介:通过指定目录地址来索引csv文件。 数据传输插件 Servlet transport (作者 elasticsearch 团队) 简介:Servlet rest插件,通过servlet来封装rest接口。 Memcached transport plugin (作者 elasticsearch 团队) 简介:本插件可以通过memcached协议进行rest接口的调用。注意:这里不是使用memcache作为es的缓存。 Thrift Transport (作者 elasticsearch 团队) 简介:使用thrift进行数据传输。 ZeroMQ transport layer plugin (作者 Tanguy Leroux) 简介:使用zeromq进rest接口的调用。 Jetty HTTP transport plugin (作者 Sonian Inc.) 简介:使用jetty来提供http rest接口。默认是使用netty。这个插件的好处是可以对http接口进行一些权限的设置。 脚本插件 Python language Plugin (作者 elasticsearch 团队) 简介:python脚本支持 JavaScript language Plugin (作者 elasticsearch 团队) 简介:javascript脚本支持 Groovy lang Plugin (作者 elasticsearch 团队) 简介:groovy脚本支持 Clojure Language Plugin (作者 Kevin Downey) 简介:clojure脚本支持 站点插件(以网页形式展现) BigDesk Plugin (作者 Lukáš Vlček) 简介:监控es状态的插件,推荐! Elasticsearch Head Plugin (作者 Ben Birch) 简介:很方便对es进行各种操作的客户端。 Paramedic Plugin (作者 Karel Minařík) 简介:es监控插件 SegmentSpy Plugin (作者 Zachary Tong) 简介:查看es索引segment状态的插件 Inquisitor Plugin (作者 Zachary Tong) 简介:这个插件主要用来调试你的查询。 其它插件 Mapper Attachments Type plugin (作者 elasticsearch 团队) 简介:附件类型插件,通过tika库把各种类型的文件格式解析成字符串。 Hadoop Plugin (作者 elasticsearch team) 简介:hadoop和elasticsearch的集成插件,可以通过hadoop的mapreduce算法来并行建立索引,同时支持cascading,hive和pig等框架。 AWS Cloud Plugin (作者 elasticsearch 团队) 简介:elasticsearch与amazon web services的集成。 ElasticSearch Mock Solr Plugin (作者 Matt Weber) 简介:elasticsearch的solr api接口。用了这个插件可以使用solr的api来调用es,直接用solrj就可以调用es。比较适用于从solr转es时暂时过度。 Suggester Plugin (作者 Alexander Reelsen) 简介:es 搜索提示功能插件,不过es0.9版本后自带了这个功能, ElasticSearch PartialUpdate Plugin (作者 Medcl) 简介:elasticsearch的部分更新插件。 ZooKeeper Discovery Plugin (作者 Sonian Inc.) 简介:通过zookeeper管理集群的插件。通过这个插件,es的分布式架构和solrcloud相似。 ElasticSearch Changes Plugin (作者 Thomas Peuss) 简介:elasticsearch索引操作记录插件。通过这个插件可以查看用户对索引的增删改操作。 ElasticSearch View Plugin (作者 Tanguy Leroux) 简介:这个插件可以把es的文档以html,xml或text的方式显示出来,它也可以通过查询生成web页面。 ElasticSearch New Relic Plugin (作者 Vinicius Carvalho) 简介:elasticsearch和newrelic的集成插件。newrelica是一个性能监控工具。这个插件会把节点的状态数据传到newrelic的账号上。 社区的编辑器好像不支持复制富文本信息,所以插件都没有链接,插件太多懒得一个个打链接了,想点地址的可以移步寒舍http://www.kailing.pub/article/index/arcid/87.html  

java爬虫爬取Elastic中文社区用作es测试数据

Elasticsearchkl 发表了文章 • 1 个评论 • 7447 次浏览 • 2016-03-29 23:10 • 来自相关话题

前言 为了测试es的完美功能,笔者使用爬虫爬取了Elastic中文社区和CSDN的大量数据,作为测试之用,下面简单介绍一下折腾的过程 认识 WebCollector WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫。WebCollector-Hadoop是WebCollector的Hadoop版本,支持分布式爬取。 WebCollector致力于维护一个稳定、可扩的爬虫内核,便于开发者进行灵活的二次开发。内核具有很强的扩展性,用户可以在内核基础上开发自己想要的爬虫。源码中集成了Jsoup,可进行精准的网页解析。2.x版本中集成了selenium,可以处理javascript生成的数据。 官网地址:http://crawlscript.github.io/WebCollector/ 使用步骤 导入jar依赖,笔者是maven项目,所有加入如下pom.xml依赖 ps:笔者这里是使用的最新版的,maven仓库目前最新版的是2.09,所以使用最新的就自己下载打包吧  环境有了后,直接新建一个类继承BreadthCrawler类重新​visit方法,你的处理逻辑都在visit方法里面,下面楼主贴下我的代码 ​爬取Elastic中文社区资源
/**
 * Created by 小陈 on 2016/3/29.
 */
@Component
public class ElasticCrawler extends BreadthCrawler {
    @Autowired
     IpaDao ipaDao;
    public ElasticCrawler() {
        super("crawl", true);
        /*start page*/
        this.addSeed("xxx");
        /*fetch url like http://news.hfut.edu.cn/show-xxxxxxhtml*/
        this.addRegex("xxx");
        /*do not fetch jpg|png|gif*/
        this.addRegex("-.*\\.(jpg|png|gif).*");
        /*do not fetch url contains #*/
//        this.addRegex("-.*#.*");
    }
    @Override
    public void visit(Page page, CrawlDatums next) {
        String url = page.getUrl();
        String content="";
        try {
             content = ContentExtractor.getContentByUrl(url);
        }catch (Exception e){
            e.printStackTrace();
        }
          /*抽取标题*/
        String title=page.getDoc().title();
        System.out.println("-------------------->"+title);
        if(!title.isEmpty() && ! content.isEmpty()){
                Pa pa=new Pa(title,content);
               ipaDao.save(pa);//持久化到数据库
            }
    }
爬取CSDN资源
/**
 * @author kl by 2016/3/29
 * @boke www.kailing.pub
 */
@Component
public class CSDNCrawler extends BreadthCrawler {
    @Autowired
    IpaDao ipaDao;
    public CSDNCrawler() {
        super("crawl", true);
        /*start page*/
        this.addSeed("http://blog.csdn.net/.*");//添加种子地址
        /*fetch url like http://news.hfut.edu.cn/show-xxxxxxhtml*/
        this.addRegex("http://blog.csdn.net/.*/article/details/.*");
        /*do not fetch jpg|png|gif*/
        this.addRegex("-.*\\.(jpg|png|gif).*");
        /*do not fetch url contains #*/
//        this.addRegex("-.*#.*");
    }
    @Override
    public void visit(Page page, CrawlDatums next) {
        String url = page.getUrl();
        String content="";
        try {
            content = ContentExtractor.getContentByUrl(url);
        }catch (Exception e){
            e.printStackTrace();
        }
        if (page.matchUrl("http://blog.csdn.net/.*/article/details/.*")) {
            String title = page.select("div[class=article_title]").first().text();
            String author = page.select("div[id=blog_userface]").first().text();//获取作者名
            System.out.println("title:" + title + "\tauthor:" + author);
            if(!title.isEmpty() && ! content.isEmpty()){
                Pa pa=new Pa(title,content);
                ipaDao.save(pa);
            }
        }
    }
ps:Elastic中文社区的爬取规则和谐了,楼主是爱社区的,大家可以放心的爬CSDN吧,WebCollector功能很强大,爬虫的一个关键就是需要知道网站的url规则,有兴趣的可以研究​ 下,Elastic的数据不多,分吧钟就够了,CSDN爬了5,6分钟,没有做深度的爬,取了大概二三十万的数据样子,只取标题和正文    去我博客查看原文 http://www.kailing.pub/article/index/arcid/86.html 下面是导入数据的截图
QQ图片20160329221750.png
QQ图片20160329221921.png
 

java使用HTTP Rest client 客户端Jest连接操作es,功能很强大

Elasticsearchkl 发表了文章 • 6 个评论 • 26358 次浏览 • 2016-03-28 23:30 • 来自相关话题

前言 在了解jest框架前,楼主一直尝试用官方的Elasticsearch java api连接es服务的,可是,不知何故,一直报如下的异常信息,谷歌了很久,都说是jvm版本不一致导致的问题,可我是本地测试的,jvm肯定是一致的,这个问题现在都木有解决,but,这怎么能阻止我探索es的脚步呢,so,让我发现了jest 这个框架    org.elasticsearch.transport.RemoteTransportException: Failed to deserialize exception response from stream Caused by: org.elasticsearch.transport.TransportSerializationException: Failed to deserialize exception response from stream 我的测试代码是参考官方api实例的,官方api地址:Elasticsearch java api,代码如下: Client client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("127.0.0.1", 9300)); QueryBuilder queryBuilder = QueryBuilders.termQuery("content", "搜"); SearchResponse searchResponse = client.prepareSearch("indexdata").setTypes("fulltext") .setQuery(queryBuilder) .execute() .actionGet(); SearchHits hits = searchResponse.getHits(); System.out.println("查询到记录数:" + hits.getTotalHits()); SearchHit[] searchHists = hits.getHits(); for(SearchHit sh : searchHists){ System.out.println("content:"+sh.getSource().get("content")); } client.close(); 如果有人知道怎么回事,告诉一下楼主吧,让楼主坑的明白,感激不尽了,我的es版本是2.2.0 进入正题 了解jest jest是一个基于 HTTP Rest 的连接es服务的api工具集,功能强大,能够使用es java api的查询语句,项目是开源的,github地址:https://github.com/searchbox-io/Jest 我的测试用例 分词器:ik,分词器地址:https://github.com/medcl/elasticsearch-analysis-ik ,es的很多功能都是基于插件提供的,es版本升级都2.2.0后,安装插件的方式不一样了,如果你安装ik分词插件有问题,请点击右上角的qq联系博主 新建索引 curl -XPUT http://localhost:9200/indexdata 创建索引的mapping,指定分词器 curl -XPOST http://localhost:9200/indexdata/fulltext/_mapping {   "fulltext": {     "_all": {       "analyzer": "ik_max_word",       "search_analyzer": "ik_max_word",       "term_vector": "no",       "store": "false"     },     "properties": {       "content": {         "type": "string",         "store": "no",         "term_vector": "with_positions_offsets",         "analyzer": "ik_max_word",         "search_analyzer": "ik_max_word",         "include_in_all": "true",         "boost": 8       },       "description": {         "type": "string",         "store": "no",         "term_vector": "with_positions_offsets",         "analyzer": "ik_max_word",         "search_analyzer": "ik_max_word",         "include_in_all": "true",         "boost": 8       },       "title": {         "type": "string",         "store": "no",         "term_vector": "with_positions_offsets",         "analyzer": "ik_max_word",         "search_analyzer": "ik_max_word",         "include_in_all": "true",         "boost": 8       },       "keyword": {         "type": "string",         "store": "no",         "term_vector": "with_positions_offsets",         "analyzer": "ik_max_word",         "search_analyzer": "ik_max_word",         "include_in_all": "true",         "boost": 8       }     }   } } mapping信息可以用head插件查看,如下 导入数据和查询,看代码吧 @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = ElasticSearchTestApplication.class) public class JestTestApplicationTests { @Autowired private KlarticleDao klarticleDao; //得到JestClient实例 public JestClient getClient()throws Exception{ JestClientFactory factory = new JestClientFactory(); factory.setHttpClientConfig(new HttpClientConfig .Builder("http://127.0.0.1:9200&quot;) .multiThreaded(true) .build()); return factory.getObject(); } /** * 导入数据库数据到es * @throws Exception */ @Test public void contextLoads() throws Exception{ JestClient client=getClient(); Listlists=klarticleDao.findAll(); for(Klarticle k:lists){ Index index = new Index.Builder(k).index("indexdata").type("fulltext").id(k.getArcid()+"").build(); System.out.println("添加索引----》"+k.getTitle()); client.execute(index); } //批量新增的方式,效率更高 Bulk.Builder bulkBuilder = new Bulk.Builder(); for(Klarticle k:lists){ Index index = new Index.Builder(k).index("indexdata").type("fulltext").id(k.getArcid()+"").build(); bulkBuilder.addAction(index); } client.execute(bulkBuilder.build()); client.shutdownClient(); } //搜索测试 @Test public void JestSearchTest()throws Exception{ SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchQuery("content", "搜索")); Search search = new Search.Builder(searchSourceBuilder.toString()) // multiple index or types can be added. .addIndex("indexdata") .build(); JestClient client =getClient(); SearchResult result= client.execute(search); // List> hits = result.getHits(Klarticle.class); Listarticles = result.getSourceAsObjectList(Klarticle.class); for(Klarticle k:articles){ System.out.println("------->:"+k.getTitle()); } } }下面是依赖的jar,maven项目<!--jest依赖--> <dependency> <groupId>io.searchbox</groupId> <artifactId>jest</artifactId> <version>2.0.0</version> </dependency> <!--jest 日志依赖--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>2.2.0</version> </dependency> </dependencies> 去我的博客查看原文:http://www.kailing.pub/article/index/arcid/84.html

关于Lucene merge 占用CPU高的问题

回复

ElasticsearchPandaXu 回复了问题 • 6 人关注 • 3 个回复 • 10088 次浏览 • 2020-04-23 12:15 • 来自相关话题

ES聚合时能否同时获取多个字段

回复

Elasticsearchjaychang 回复了问题 • 4 人关注 • 3 个回复 • 12890 次浏览 • 2018-04-09 18:38 • 来自相关话题

使用spark向elasticsearch中写入数据异常

回复

Elasticsearchjoe23_2006 回复了问题 • 6 人关注 • 6 个回复 • 20076 次浏览 • 2018-01-31 13:36 • 来自相关话题

FunctionScore不允许嵌套,那类似 MAX(A, B) + C 这样的分值该怎么处理?

回复

ElasticsearchJea 回复了问题 • 5 人关注 • 2 个回复 • 4389 次浏览 • 2017-07-25 10:39 • 来自相关话题

elasticsearch中的索引跟数据库中的索引有什么区别?

回复

Elasticsearchluc 回复了问题 • 3 人关注 • 2 个回复 • 4173 次浏览 • 2017-06-03 17:18 • 来自相关话题

elasticsearch-spark update field using script返回异常

回复

Elasticsearchggchangan 发起了问题 • 1 人关注 • 0 个回复 • 6993 次浏览 • 2016-09-02 18:53 • 来自相关话题

修改ES索引自动创建规则后,Marvel监控数据采集不全

回复

Elasticsearchmedcl 回复了问题 • 2 人关注 • 1 个回复 • 6411 次浏览 • 2016-08-11 23:40 • 来自相关话题

创建索引时副本(replicas)延迟复制的问题

回复

Elasticsearchmedcl 回复了问题 • 3 人关注 • 1 个回复 • 5011 次浏览 • 2016-07-21 09:10 • 来自相关话题

禁止shard allocation,滚动重启ES节点后,原来的分片都变成了Unassigned状态

回复

Elasticsearchnihao 回复了问题 • 3 人关注 • 1 个回复 • 8042 次浏览 • 2016-07-13 18:36 • 来自相关话题

ES2.1中@timestamp的mapping冲突

回复

Elasticsearchsp42 回复了问题 • 4 人关注 • 4 个回复 • 11200 次浏览 • 2016-06-29 13:38 • 来自相关话题

ElasticSearch 2.x java client 如何从SearchResponse中获取_routing

回复

Elasticsearchlilin 发起了问题 • 1 人关注 • 0 个回复 • 7480 次浏览 • 2016-05-27 20:01 • 来自相关话题

ES2.0后怎么支持thrift?

回复

Elasticsearchskyspasser 发起了问题 • 1 人关注 • 0 个回复 • 4671 次浏览 • 2016-05-04 09:10 • 来自相关话题

新人提问:kibana链接es失败,该如何解决!

回复

Elasticsearchmedcl 回复了问题 • 2 人关注 • 1 个回复 • 8963 次浏览 • 2016-02-28 09:58 • 来自相关话题

集群升级到2.1大家使用什么监控插件

回复

Elasticsearchnodexy 回复了问题 • 2 人关注 • 1 个回复 • 5060 次浏览 • 2016-02-01 22:31 • 来自相关话题

ES有完整的API文档吗》官网上的是不是不全噢

回复

Elasticsearchmiranda2016 发起了问题 • 1 人关注 • 0 个回复 • 4942 次浏览 • 2016-02-01 14:29 • 来自相关话题

ElasticSearch插件集

Elasticsearchkl 发表了文章 • 0 个评论 • 12252 次浏览 • 2016-03-30 18:07 • 来自相关话题

ElasticSearch的很多功能都是官方或第三方基于ElasticSearch的AbstractPlugin类实现的插件来提供的,所以,在里里记录下一些常用的及实用的插件地址,以备不时之需 分词插件 Combo Analysis Plugin (作者 Olivier Favre, Yakaz) 简介:组合分词器,可以把多个分词器的结果组合在一起。 Smart Chinese Analysis Plugin (作者 elasticsearch 团队) 简介:lucene默认的中文分词器 ICU Analysis plugin (作者 elasticsearch 团队) 简介:lucene自带的ICU分词,ICU是一套稳定、成熟、功能强大、轻便易用和跨平台支持Unicode 的开发包。 Stempel (Polish) Analysis plugin (作者 elasticsearch 团队) 简介:法文分词器 IK Analysis Plugin (作者 Medcl) 简介:大名鼎鼎的ik分词,都懂的! Mmseg Analysis Plugin (作者 Medcl) 简介:mmseg中文分词 Hunspell Analysis Plugin (作者 Jörg Prante) 简介:lucene自带的Hunspell模块 Japanese (Kuromoji) Analysis plugin (作者 elasticsearch 团队). 简介:日文分词器 Japanese Analysis plugin (作者 suguru). 简介:日文分词器 Russian and English Morphological Analysis Plugin (作者 Igor Motov) 简介:俄文英文分词器 Pinyin Analysis Plugin (作者 Medcl) 简介:拼音分词器 String2Integer Analysis Plugin (作者 Medcl) 简介:字符串转整型工具。主要用在facet这个功能上,如果facet的field的值是字符串的话,计算起来比较耗资源。可以把字符串映射成整型,对整型进行facet操作要比对字符串的快很多。 同步插件 CouchDB River Plugin (作者 elasticsearch 团队) 简介:CouchDB和elasticsearch的同步插件 Wikipedia River Plugin (作者 elasticsearch 团队) 简介:wikipedia文件读取插件。wikipedia是维基百科的一个离线库,不定期发布最新数据,是以xml形式发布的。这个river读取这个文件来建索引。 Twitter River Plugin (作者 elasticsearch 团队) 简介:twitter的同步插件,可以同步你twitter上的微博。 RabbitMQ River Plugin (作者 elasticsearch 团队) 简介:rabbitmq同步插件,读取rabbitmq上的队列信息并索引。 RSS River Plugin (作者 David Pilato) 简介:定期索引指定一个或多个RSS源的数据。 MongoDB River Plugin (作者 Richard Louapre) 简介:mongodb同步插件,mongodb必须搭成副本集的模式,因为这个插件的原理是通过定期读取mongodb中的oplog来同步数据。 Open Archives Initiative (OAI) River Plugin (作者 Jörg Prante) 简介:可以索引oai数据提供者提供的数据。 Sofa River Plugin (作者 adamlofts) 简介:这个插件可以把多个CouchDB的数据库同步到同一个es索引中。 JDBC River Plugin (作者 Jörg Prante) 简介:关系型数据库的同步插件 FileSystem River Plugin (作者 David Pilato) 简介:本地文件系统文件同步插件,使用方法是指定一个本地目录路径,es会定期扫描索引该目录下的文件。 LDAP River Plugin (作者 Tanguy Leroux) 简介:索引LDAP目录下的文件数据。 Dropbox River Plugin (作者 David Pilato) 简介:索引dropbox网盘上的文件。通过oauth协议来调用dropbox上的api建索引。 ActiveMQ River Plugin (作者 Dominik Dorn) 简介:activemq队列的同步插件,和之前rabbitmq的类似 Solr River Plugin (作者 Luca Cavanna) 简介:solr同步插件,可以把solr里面的索引同步到es CSV River Plugin (作者 Martin Bednar) 简介:通过指定目录地址来索引csv文件。 数据传输插件 Servlet transport (作者 elasticsearch 团队) 简介:Servlet rest插件,通过servlet来封装rest接口。 Memcached transport plugin (作者 elasticsearch 团队) 简介:本插件可以通过memcached协议进行rest接口的调用。注意:这里不是使用memcache作为es的缓存。 Thrift Transport (作者 elasticsearch 团队) 简介:使用thrift进行数据传输。 ZeroMQ transport layer plugin (作者 Tanguy Leroux) 简介:使用zeromq进rest接口的调用。 Jetty HTTP transport plugin (作者 Sonian Inc.) 简介:使用jetty来提供http rest接口。默认是使用netty。这个插件的好处是可以对http接口进行一些权限的设置。 脚本插件 Python language Plugin (作者 elasticsearch 团队) 简介:python脚本支持 JavaScript language Plugin (作者 elasticsearch 团队) 简介:javascript脚本支持 Groovy lang Plugin (作者 elasticsearch 团队) 简介:groovy脚本支持 Clojure Language Plugin (作者 Kevin Downey) 简介:clojure脚本支持 站点插件(以网页形式展现) BigDesk Plugin (作者 Lukáš Vlček) 简介:监控es状态的插件,推荐! Elasticsearch Head Plugin (作者 Ben Birch) 简介:很方便对es进行各种操作的客户端。 Paramedic Plugin (作者 Karel Minařík) 简介:es监控插件 SegmentSpy Plugin (作者 Zachary Tong) 简介:查看es索引segment状态的插件 Inquisitor Plugin (作者 Zachary Tong) 简介:这个插件主要用来调试你的查询。 其它插件 Mapper Attachments Type plugin (作者 elasticsearch 团队) 简介:附件类型插件,通过tika库把各种类型的文件格式解析成字符串。 Hadoop Plugin (作者 elasticsearch team) 简介:hadoop和elasticsearch的集成插件,可以通过hadoop的mapreduce算法来并行建立索引,同时支持cascading,hive和pig等框架。 AWS Cloud Plugin (作者 elasticsearch 团队) 简介:elasticsearch与amazon web services的集成。 ElasticSearch Mock Solr Plugin (作者 Matt Weber) 简介:elasticsearch的solr api接口。用了这个插件可以使用solr的api来调用es,直接用solrj就可以调用es。比较适用于从solr转es时暂时过度。 Suggester Plugin (作者 Alexander Reelsen) 简介:es 搜索提示功能插件,不过es0.9版本后自带了这个功能, ElasticSearch PartialUpdate Plugin (作者 Medcl) 简介:elasticsearch的部分更新插件。 ZooKeeper Discovery Plugin (作者 Sonian Inc.) 简介:通过zookeeper管理集群的插件。通过这个插件,es的分布式架构和solrcloud相似。 ElasticSearch Changes Plugin (作者 Thomas Peuss) 简介:elasticsearch索引操作记录插件。通过这个插件可以查看用户对索引的增删改操作。 ElasticSearch View Plugin (作者 Tanguy Leroux) 简介:这个插件可以把es的文档以html,xml或text的方式显示出来,它也可以通过查询生成web页面。 ElasticSearch New Relic Plugin (作者 Vinicius Carvalho) 简介:elasticsearch和newrelic的集成插件。newrelica是一个性能监控工具。这个插件会把节点的状态数据传到newrelic的账号上。 社区的编辑器好像不支持复制富文本信息,所以插件都没有链接,插件太多懒得一个个打链接了,想点地址的可以移步寒舍http://www.kailing.pub/article/index/arcid/87.html  

java爬虫爬取Elastic中文社区用作es测试数据

Elasticsearchkl 发表了文章 • 1 个评论 • 7447 次浏览 • 2016-03-29 23:10 • 来自相关话题

前言 为了测试es的完美功能,笔者使用爬虫爬取了Elastic中文社区和CSDN的大量数据,作为测试之用,下面简单介绍一下折腾的过程 认识 WebCollector WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫。WebCollector-Hadoop是WebCollector的Hadoop版本,支持分布式爬取。 WebCollector致力于维护一个稳定、可扩的爬虫内核,便于开发者进行灵活的二次开发。内核具有很强的扩展性,用户可以在内核基础上开发自己想要的爬虫。源码中集成了Jsoup,可进行精准的网页解析。2.x版本中集成了selenium,可以处理javascript生成的数据。 官网地址:http://crawlscript.github.io/WebCollector/ 使用步骤 导入jar依赖,笔者是maven项目,所有加入如下pom.xml依赖 ps:笔者这里是使用的最新版的,maven仓库目前最新版的是2.09,所以使用最新的就自己下载打包吧  环境有了后,直接新建一个类继承BreadthCrawler类重新​visit方法,你的处理逻辑都在visit方法里面,下面楼主贴下我的代码 ​爬取Elastic中文社区资源
/**
 * Created by 小陈 on 2016/3/29.
 */
@Component
public class ElasticCrawler extends BreadthCrawler {
    @Autowired
     IpaDao ipaDao;
    public ElasticCrawler() {
        super("crawl", true);
        /*start page*/
        this.addSeed("xxx");
        /*fetch url like http://news.hfut.edu.cn/show-xxxxxxhtml*/
        this.addRegex("xxx");
        /*do not fetch jpg|png|gif*/
        this.addRegex("-.*\\.(jpg|png|gif).*");
        /*do not fetch url contains #*/
//        this.addRegex("-.*#.*");
    }
    @Override
    public void visit(Page page, CrawlDatums next) {
        String url = page.getUrl();
        String content="";
        try {
             content = ContentExtractor.getContentByUrl(url);
        }catch (Exception e){
            e.printStackTrace();
        }
          /*抽取标题*/
        String title=page.getDoc().title();
        System.out.println("-------------------->"+title);
        if(!title.isEmpty() && ! content.isEmpty()){
                Pa pa=new Pa(title,content);
               ipaDao.save(pa);//持久化到数据库
            }
    }
爬取CSDN资源
/**
 * @author kl by 2016/3/29
 * @boke www.kailing.pub
 */
@Component
public class CSDNCrawler extends BreadthCrawler {
    @Autowired
    IpaDao ipaDao;
    public CSDNCrawler() {
        super("crawl", true);
        /*start page*/
        this.addSeed("http://blog.csdn.net/.*");//添加种子地址
        /*fetch url like http://news.hfut.edu.cn/show-xxxxxxhtml*/
        this.addRegex("http://blog.csdn.net/.*/article/details/.*");
        /*do not fetch jpg|png|gif*/
        this.addRegex("-.*\\.(jpg|png|gif).*");
        /*do not fetch url contains #*/
//        this.addRegex("-.*#.*");
    }
    @Override
    public void visit(Page page, CrawlDatums next) {
        String url = page.getUrl();
        String content="";
        try {
            content = ContentExtractor.getContentByUrl(url);
        }catch (Exception e){
            e.printStackTrace();
        }
        if (page.matchUrl("http://blog.csdn.net/.*/article/details/.*")) {
            String title = page.select("div[class=article_title]").first().text();
            String author = page.select("div[id=blog_userface]").first().text();//获取作者名
            System.out.println("title:" + title + "\tauthor:" + author);
            if(!title.isEmpty() && ! content.isEmpty()){
                Pa pa=new Pa(title,content);
                ipaDao.save(pa);
            }
        }
    }
ps:Elastic中文社区的爬取规则和谐了,楼主是爱社区的,大家可以放心的爬CSDN吧,WebCollector功能很强大,爬虫的一个关键就是需要知道网站的url规则,有兴趣的可以研究​ 下,Elastic的数据不多,分吧钟就够了,CSDN爬了5,6分钟,没有做深度的爬,取了大概二三十万的数据样子,只取标题和正文    去我博客查看原文 http://www.kailing.pub/article/index/arcid/86.html 下面是导入数据的截图
QQ图片20160329221750.png
QQ图片20160329221921.png
 

java使用HTTP Rest client 客户端Jest连接操作es,功能很强大

Elasticsearchkl 发表了文章 • 6 个评论 • 26358 次浏览 • 2016-03-28 23:30 • 来自相关话题

前言 在了解jest框架前,楼主一直尝试用官方的Elasticsearch java api连接es服务的,可是,不知何故,一直报如下的异常信息,谷歌了很久,都说是jvm版本不一致导致的问题,可我是本地测试的,jvm肯定是一致的,这个问题现在都木有解决,but,这怎么能阻止我探索es的脚步呢,so,让我发现了jest 这个框架    org.elasticsearch.transport.RemoteTransportException: Failed to deserialize exception response from stream Caused by: org.elasticsearch.transport.TransportSerializationException: Failed to deserialize exception response from stream 我的测试代码是参考官方api实例的,官方api地址:Elasticsearch java api,代码如下: Client client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("127.0.0.1", 9300)); QueryBuilder queryBuilder = QueryBuilders.termQuery("content", "搜"); SearchResponse searchResponse = client.prepareSearch("indexdata").setTypes("fulltext") .setQuery(queryBuilder) .execute() .actionGet(); SearchHits hits = searchResponse.getHits(); System.out.println("查询到记录数:" + hits.getTotalHits()); SearchHit[] searchHists = hits.getHits(); for(SearchHit sh : searchHists){ System.out.println("content:"+sh.getSource().get("content")); } client.close(); 如果有人知道怎么回事,告诉一下楼主吧,让楼主坑的明白,感激不尽了,我的es版本是2.2.0 进入正题 了解jest jest是一个基于 HTTP Rest 的连接es服务的api工具集,功能强大,能够使用es java api的查询语句,项目是开源的,github地址:https://github.com/searchbox-io/Jest 我的测试用例 分词器:ik,分词器地址:https://github.com/medcl/elasticsearch-analysis-ik ,es的很多功能都是基于插件提供的,es版本升级都2.2.0后,安装插件的方式不一样了,如果你安装ik分词插件有问题,请点击右上角的qq联系博主 新建索引 curl -XPUT http://localhost:9200/indexdata 创建索引的mapping,指定分词器 curl -XPOST http://localhost:9200/indexdata/fulltext/_mapping {   "fulltext": {     "_all": {       "analyzer": "ik_max_word",       "search_analyzer": "ik_max_word",       "term_vector": "no",       "store": "false"     },     "properties": {       "content": {         "type": "string",         "store": "no",         "term_vector": "with_positions_offsets",         "analyzer": "ik_max_word",         "search_analyzer": "ik_max_word",         "include_in_all": "true",         "boost": 8       },       "description": {         "type": "string",         "store": "no",         "term_vector": "with_positions_offsets",         "analyzer": "ik_max_word",         "search_analyzer": "ik_max_word",         "include_in_all": "true",         "boost": 8       },       "title": {         "type": "string",         "store": "no",         "term_vector": "with_positions_offsets",         "analyzer": "ik_max_word",         "search_analyzer": "ik_max_word",         "include_in_all": "true",         "boost": 8       },       "keyword": {         "type": "string",         "store": "no",         "term_vector": "with_positions_offsets",         "analyzer": "ik_max_word",         "search_analyzer": "ik_max_word",         "include_in_all": "true",         "boost": 8       }     }   } } mapping信息可以用head插件查看,如下 导入数据和查询,看代码吧 @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = ElasticSearchTestApplication.class) public class JestTestApplicationTests { @Autowired private KlarticleDao klarticleDao; //得到JestClient实例 public JestClient getClient()throws Exception{ JestClientFactory factory = new JestClientFactory(); factory.setHttpClientConfig(new HttpClientConfig .Builder("http://127.0.0.1:9200&quot;) .multiThreaded(true) .build()); return factory.getObject(); } /** * 导入数据库数据到es * @throws Exception */ @Test public void contextLoads() throws Exception{ JestClient client=getClient(); Listlists=klarticleDao.findAll(); for(Klarticle k:lists){ Index index = new Index.Builder(k).index("indexdata").type("fulltext").id(k.getArcid()+"").build(); System.out.println("添加索引----》"+k.getTitle()); client.execute(index); } //批量新增的方式,效率更高 Bulk.Builder bulkBuilder = new Bulk.Builder(); for(Klarticle k:lists){ Index index = new Index.Builder(k).index("indexdata").type("fulltext").id(k.getArcid()+"").build(); bulkBuilder.addAction(index); } client.execute(bulkBuilder.build()); client.shutdownClient(); } //搜索测试 @Test public void JestSearchTest()throws Exception{ SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchQuery("content", "搜索")); Search search = new Search.Builder(searchSourceBuilder.toString()) // multiple index or types can be added. .addIndex("indexdata") .build(); JestClient client =getClient(); SearchResult result= client.execute(search); // List> hits = result.getHits(Klarticle.class); Listarticles = result.getSourceAsObjectList(Klarticle.class); for(Klarticle k:articles){ System.out.println("------->:"+k.getTitle()); } } }下面是依赖的jar,maven项目<!--jest依赖--> <dependency> <groupId>io.searchbox</groupId> <artifactId>jest</artifactId> <version>2.0.0</version> </dependency> <!--jest 日志依赖--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>2.2.0</version> </dependency> </dependencies> 去我的博客查看原文:http://www.kailing.pub/article/index/arcid/84.html

大家聊一聊使用的什么版本的Elasticsearch,看看Elasticsearch版本变化

Elasticsearchkl 发表了文章 • 4 个评论 • 6600 次浏览 • 2016-03-28 19:12 • 来自相关话题

我是最近从lucene过渡Elasticsearch的,直接用的最新的2.2.0版本的。发现离线安装插件的方式和以前不一样了,一些配置也有改变,最大的问题是java client api 连接报了如下的异常,我是参照官方api测试的,地址:https://www.elastic.co/guide/e ... .html
org.elasticsearch.transport.RemoteTransportException: Failed to deserialize exception response from stream
谷歌都说是服务和客户端的jvm不一致,我是本机环境测试的,所以,现在这个问题都还没解决,有遇到过的么,还是和版本有关系啊
我是最近从lucene过渡Elasticsearch的,直接用的最新的2.2.0版本的。发现离线安装插件的方式和以前不一样了,一些配置也有改变,最大的问题是java client api 连接报了如下的异常,我是参照官方api测试的,地址:https://www.elastic.co/guide/e ... .html
org.elasticsearch.transport.RemoteTransportException: Failed to deserialize exception response from stream
谷歌都说是服务和客户端的jvm不一致,我是本机环境测试的,所以,现在这个问题都还没解决,有遇到过的么,还是和版本有关系啊

ElasticSearch2.1.1安装及简单配置说明

Elasticsearchverra1448 发表了文章 • 2 个评论 • 5463 次浏览 • 2016-02-02 09:29 • 来自相关话题

目前最新版ES超级详细的安装、配置流程。 根据自己真实的安装过程以及多篇博客文章的重要提示编写。 按照文档中的说明一步一步操作,分分钟就能开始ES2.1.1的非凡体验!
目前最新版ES超级详细的安装、配置流程。 根据自己真实的安装过程以及多篇博客文章的重要提示编写。 按照文档中的说明一步一步操作,分分钟就能开始ES2.1.1的非凡体验!