`
riching
  • 浏览: 261370 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用java访问elasticsearch创建索引

 
阅读更多
1、添加maven依赖
<dependency>
	<groupId>org.elasticsearch</groupId>
	<artifactId>elasticsearch</artifactId>
	<version>0.90.0</version>
</dependency>

建议使用maven管理项目,因为elasticsearch还有很多依赖包,手工维护很麻烦
2、创建连接elasticsearch服务的client
Settings settings = ImmutableSettings.settingsBuilder().put("client.transport.sniff", true).put("cluster.name", "name of node").build();
Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("ip of server", 9300));

3、创建索引
elasticsearch的java客户端,支持多种方式构建索引数据,这里有两种方式的代码示例:使用jsonbuilder构建数据
IndexResponse response = client.prepareIndex("comment_index", "comment_ugc", "comment_123674")
    .setSource( XContentFactory.jsonBuilder()
    .startObject()
      .field("author", "569874")
      .field("author_name", "riching")
      .field("mark", 232)
      .field("body", "北京不错,但是人太多了")
      .field("createDate", "20130801175520")
      .field("valid", true)
    .endObject())
    .setTTL(8000)
    .execute().actionGet();

System.out.println(response.getId());

另外一种,是把数据构造成json串,直接传给client
Student student = new Student(103161066, 20, "riching", "beijing");
String jsonValue = mapper.writeValueAsString(student);
response = client.prepareIndex("student_index", "student_info", "stu_103161066").setSource(jsonValue).execute().actionGet();
System.out.println(response.getId());

实际应用中应该是下面一种更方便,可以把需要索引的对象直接扔过去了


4、根据id获取数据
GetResponse responseGet = client.prepareGet("comment_index", "comment_ugc",         "comment_123674").execute().actionGet();
System.out.println(responseGet.getSourceAsString());


5、查询索引
SearchRequestBuilder builder = client.prepareSearch("comment_index").setTypes("comment_ugc").setSearchType(SearchType.DEFAULT).setFrom(0).setSize(100);
BoolQueryBuilder qb = QueryBuilders.boolQuery().must(new   QueryStringQueryBuilder("北京").field("body"))
    .should(new QueryStringQueryBuilder("太多").field("body"));
builder.setQuery(qb);
SearchResponse response = builder.execute().actionGet();
System.out.println("  " + response);
System.out.println(response.getHits().getTotalHits());

执行结果
{
  "took" : 8,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.19178301,
    "hits" : [ {
      "_index" : "comment_index",
      "_type" : "comment_ugc",
      "_id" : "comment_123674",
      "_score" : 0.19178301, "_source" : {"author":"569874","author_name":"riching","mark":232,"body":"北京不错,但是人太多了","createDate":"20130801175520","valid":true}
    } ]
  }
}
1


6、删除索引,可以根据索引id删除索引,也可以构造query进行删除,这跟lucene的api是类似的,只不过api不一样而已
DeleteResponse response = client.prepareDelete("comment_index", "comment_ugc", "comment_123674") .setOperationThreaded(false).execute().actionGet();
System.out.println(response.getId());

这个删除有个小问题,如果删除完立即进行查询还是可以查到
分享到:
评论

相关推荐

    elasticsearch整合分词、创建索引、搜索例子

    lasticsearch整合分词、创建索引、搜索例子,elasticsearch版本为1.0,索引数据从数据表中动态读取生成,有关键字高亮效果,查询分页 1 在dababase目录中导致相关的数据库文件,修改DBCOperation java文件数据库连接...

    ElasticSearch:该应用程序说明并演示了后端中ElasticSearch Java API的使用

    演示如何使用Elasticsearch Java API 该存储库演示了如何通过Java High Level REST Client使用Elasticsearch Java API。 如果要查看旧版本的示例,请访问分支。您将在此存储库中学到什么? 如何使用Java高级REST...

    elasticsearch 报错问题汇总

    在 centos7 上搭建 elasticsearch时,发生了一些报错,总结如下: 1. Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error=’Cannot allocate ...

    Test-elasticsearch-data:elasticsearch 获取数据

    测试弹性搜索数据 elasticsearch 1.4.4 java代码的搜索数据 运行 hiii.java 自动创建 hiii 索引,类型=成员,访问,登录,产品 运行 Fanlike.java 测试 Es 搜索数据

    content-crawler:将CMS和文章从Mendeley爬到ElasticSearch索引中

    内容抓取该项目包含用于访问Mendeley API和Contentful API并在Elastic Search索引中对其进行索引的搜寻器代码。门德利爬网Mendeley API需要通过以下方式创建的应用程序密钥和机密: 在上创建一个帐户点击“我的应用...

    中文分词工具word-1.0,Java实现的中文分词组件多种基于词典的分词算法

    4、启动ElasticSearch测试效果,在Chrome浏览器中访问: http://localhost:9200/_analyze?analyzer=word&text=杨尚川是APDPlat应用级产品开发平台的作者 5、自定义配置 将word.local.conf复制到elasticsearch-...

    ELK6.2.4搭建

    Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 Logstash是一个完全开源的工具,他可以对你的日志进行...

    精通ANDROID 3(中文版)1/2

    20.3.5 使用索引添加另一个三角形  20.3.6 为简单的OpenGL三角形制作动画  20.4 OpenGL的运用:形状和纹理  20.4.1 绘制矩形  20.4.2 使用形状  20.4.3 使用纹理  20.4.4 绘制多个图形  20.5 OpenGL ...

    精通Android 3 (中文版)2/2

    20.3.5 使用索引添加另一个三角形  20.3.6 为简单的OpenGL三角形制作动画  20.4 OpenGL的运用:形状和纹理  20.4.1 绘制矩形  20.4.2 使用形状  20.4.3 使用纹理  20.4.4 绘制多个图形  20.5 OpenGL ...

    OPhone应用开发权威指南(黄晓庆)

    6.3.4 创建索引 241 6.3.5 创建视图 241 6.3.6 操作数据 243 6.3.7 将Cursor绑定到AdapterView 250 6.4 Content Provider 254 6.4.1 概述 254 6.4.2 Content Provider加载机制 256 6.4.3 创建Content Provider 257 ...

    2009.6.19—30举办3S研讨会暨Google Earth与Google Map等仿真建模与共享及ARCGIS与遥感高级程序员培训班

    2、如何创建,使用,编辑以及管理存储在GEODATABASE数据模型中空间数据和属性数据 主讲人:GIS硕士、南京路川公司专业技术开发工程师 3、以ARCCIS9的功能结构主线,学习利用ARCCIS进行数据输入,数据编辑,地图配标...

Global site tag (gtag.js) - Google Analytics