`

elasticsearch java API ------索引数据

阅读更多

创建索引的第一步工作,是将你要创建索引的对象转化为Json字符串。

        生成Json的方法很多,最直接的是手写,将你的实体转化为Json:

 

[java] view plaincopy
 
 
  1. String json = "{" +  
  2.         ""user":"kimchy"," +  
  3.         ""postDate":"2013-01-30"," +  
  4.         ""message":"trying out Elastic Search"," +  
  5.     "}";  


        第二种,是使用Map方式:

 

 

[java] view plaincopy
 
 
  1. Map<String, Object> json = new HashMap<String, Object>();  
  2. json.put("user","kimchy");  
  3. json.put("postDate",new Date());  
  4. json.put("message","trying out Elastic Search");  


        第三种,是使用Elasticsearch提供的帮助类

[java] view plaincopy
 
 
  1. import static org.elasticsearch.common.xcontent.XContentFactory.*;  
  2.   
  3. XContentBuilder builder = jsonBuilder()  
  4.     .startObject()  
  5.         .field("user""kimchy")  
  6.         .field("postDate"new Date())  
  7.         .field("message""trying out Elastic Search")  
  8.     .endObject();  
  9. String json = builder.string();  


        第四种是使用jackson技术,你可以导入jackson的jar包,如果是maven管理的项目,则直接在pom.xml中添加:

 

 

[java] view plaincopy
 
 
  1. <dependency>  
  2.     <groupId>com.fasterxml.jackson.core</groupId>  
  3.     <artifactId>jackson-databind</artifactId>  
  4.     <version>2.1.3</version>  
  5. </dependency>  


        然后:

 

 

[java] view plaincopy
 
 
  1. import com.fasterxml.jackson.databind.*;  
  2.   
  3. // instance a json mapper  
  4. ObjectMapper mapper = new ObjectMapper(); // create once, reuse  
  5.   
  6. // generate json  
  7. String json = mapper.writeValueAsString(yourbeaninstance);  


        接下来便可以创建索引了:

 

 

[java] view plaincopy
 
 
  1. IndexResponse response = client.prepareIndex("twitter""tweet")  
  2.         .setSource(json)  
  3.         .execute()  
  4.         .actionGet();  

        client.prepareIndex的参数可以是0个(其后必须使用index(String)和type(String)方法),两个(client.prepareIndex(index,type))和三个(client.prepareIndex(index,type,id)),其中,index类似于数据库名,type类似于表名,而id则是每条记录的惟一编码,通常情况下,我们会把实体的惟一编码作为ES的ID,当然,不给的时候,由ES自动生成。

 

        response是Elasticsearch创建完成索引后,回馈给你的实体,你可以从这个实体中获得一些有价值的信息:

 

[java] view plaincopy
 
 
  1. // 索引名称  
  2. String _index = response.index();  
  3. // type名称  
  4. String _type = response.type();  
  5. // 文档ID  
  6. String _id = response.id();  
  7. // 索引版本  
  8. long _version = response.version();  

 

 

TransportClient client = null;



public ESClientTest() {
Settings settings = ImmutableSettings.settingsBuilder()
.put("client.transport.sniff", true).build();
client = new TransportClient(settings);
}


public void connect() {
client.addTransportAddress(new InetSocketTransportAddress("localhost", 9300)); 
}

public void close(){
client.close();

}

public void index(){
try {
XContentBuilder doc = XContentFactory.jsonBuilder()
         .startObject()     
             .field("title", "this")
             .field("description", "descript") 
             .field("price", 100)
             .field("onSale", true)
             .field("type", 1)
             .field("createDate", new Date())  
        .endObject();
  client.prepareIndex("productindex","productindex","1").setSource(doc).execute().actionGet();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
    
}

public static void main(String[] args) {
ESClientTest es = new ESClientTest();
es.index();
es.close();
}

其中productIndex为索引库名,一个es集群中可以有多个索引库。productType为索引类型,是用来区分同索引库下不同类型的数据的,一个索引库下可以有多个索引类型。

 

 

elasticsearch java API --------删除索引数据

public void delbyquery(){
QueryBuilder query = QueryBuilders.fieldQuery("type", "1");
     client.prepareDeleteByQuery("productindex").setQuery(query).execute().actionGet();


}

public void delbyid(){
DeleteResponse response = client.prepareDelete("productindex", "productindex", "1") 
       .execute() 
       .actionGet();

}

 

分享到:
评论

相关推荐

    ElasticSearch Java API 中文文档

    标签《ES Java API 中文文档》强调了文档的内容属性,它属于ElasticSearch的一个重要组成部分,即用Java语言进行数据交互和操作的应用程序接口部分。 从部分内容中可以提取出以下知识点: 1. **Transport Client**...

    基于Elasticsearch Java API的参考手册

    Java API是Elasticsearch官方提供的与Elasticsearch服务器进行交互的主要工具,它使得开发者能够用Java语言便捷地进行索引、搜索、聚合等多种操作。 ### 一、Elasticsearch核心概念 1. **节点(Node)**: Elastic...

    elasticsearch java api

    **Elasticsearch Java API**是Elasticsearch官方提供的用于与Elasticsearch服务器进行交互的Java客户端库。在Java应用程序中,我们通常会使用这个API来创建、查询、更新和删除索引中的数据。Elasticsearch 2.3版本的...

    elasticsearch-java-demo

    开发者可以从中学习如何设置 Elasticsearch 配置,以及如何使用 Java API 进行数据操作。 总的来说,Elasticsearch 结合 Spring Boot 和 Java 提供了一个高效、灵活的解决方案,用于处理大规模数据的搜索和分析任务...

    ElasticSearch Java API

    在博客《Elasticsearch Java API详解》中,作者分享了一个使用Java API操作Elasticsearch的实例,包括如何创建索引、插入数据、执行搜索和聚合。通过这个实例,你可以深入理解Elasticsearch Java API的使用方法和...

    最新版 elasticsearch-analysis-ik-7.14.0.zip

    这个插件旨在提供更强大的中文分词能力,以提高Elasticsearch在处理中文数据时的搜索准确性和效率。 Elasticsearch是一款开源的全文搜索引擎,广泛应用于数据分析和日志监控等领域。其核心功能包括索引、搜索、分析...

    最新版 elasticsearch-analysis-ik-8.4.1.zip

    配置完成后,可以在 Elasticsearch 的 REST API 或客户端中使用 IK 分词器进行索引和搜索操作。 总的来说,Elasticsearch Analysis IK 8.4.1 是一个强大且成熟的中文分词解决方案,对于需要处理大量中文数据的 ...

    elasticsearch-7.4.2-linux-x86_64.tar.gz

    5. RESTful API:Elasticsearch 使用 RESTful 风格的 API 进行操作,使得与各种编程语言的集成变得简单,通过 HTTP 协议即可进行数据的增删改查和搜索操作。 6. 插件支持:Elasticsearch 社区提供了丰富的插件,...

    elasticsearch离线JAVA API文档下载

    总结,Elasticsearch的Java API为开发者提供了丰富的接口,方便进行索引管理、数据存取、高级搜索和集群监控等任务。离线下载的Java API文档是开发者不可或缺的学习和参考资源,它详细解释了每个方法的使用和示例,...

    elasticsearch java api 离线文档

    在 Java 应用程序中使用 Elasticsearch,开发者可以利用 Java API 来执行索引、搜索、聚合、更新和删除等操作。这些操作使得 Elasticsearch 成为大数据分析、日志处理和实时搜索等场景的理想选择。 **1. 索引操作**...

    最新版windows elasticsearch-8.1.1-windows-x86_64.zip

    Elasticsearch是一个高度可扩展的开源全文搜索引擎,广泛应用于数据搜索、分析和实时监控场景。在Windows平台上,Elasticsearch的最新版本为8.1.1,专为64位操作系统设计。这个压缩包“elasticsearch-8.1.1-windows-...

    elasticSearch(ES)最新版 ik分词插件7.10 elasticsearch-analysis-ik-7.10.0

    安装这个插件可以使得Elasticsearch更好地理解和处理中文词汇,从而提升中文数据的索引和查询性能。 在提供的压缩包文件中,我们看到了以下文件: 1. httpclient-4.5.2.jar:这是Apache HttpClient库的一个版本,...

    分布式搜索 elasticsearch 方案研究 - Java API

    总结, 本文详细介绍了使用 Java API 实现与 Elasticsearch 集群交互的方法, 包括连接集群、定义索引字段、索引数据、删除数据、搜索以及数据同步等方面的内容。这些技术对于构建高效稳定的搜索系统至关重要。

    elasticsearch-jdbc-2.2.0.0-dist

    Elasticsearch-JDBC是Elasticsearch的一个插件,主要用于将数据从关系型数据库(如MySQL、Oracle等)导入到Elasticsearch中,实现数据的实时同步。2.2.0.0是该插件的一个版本号,这通常代表了在那个特定时间点的稳定...

    最新版 elasticsearch-analysis-ik-7.8.1.zip

    1. **Elasticsearch**:Elasticsearch 是基于 Lucene 的搜索引擎,提供了 RESTful 风格的 API,使得数据索引和查询变得简单。它支持分布式、实时的数据存储和检索,能够处理大量的数据并快速返回结果。 2. **...

    elasticsearch-7.9.0-linux-x86_64.rar

    - **实时性**:Elasticsearch在数据被索引时就可搜索,无需额外的刷新操作,这使得它在实时数据分析领域非常受欢迎。 - **弹性伸缩**:Elasticsearch可以随着需求增加或减少节点,无需停机,保证服务的连续性。 3...

    elasticsearch-7.7.0-2020-linux-x86_64.tar.gz.zip

    在Elasticsearch中,数据以索引(Index)的形式存储,每个索引可以包含一个或多个类型(Type),在7.x版本后,已不再支持类型概念,所有文档直接属于索引。可以通过HTTP RESTful API来创建、查询、更新和删除数据。...

    最新版windows elasticsearch-8.2.0-windows-x86_64.zip

    5. 实时性:Elasticsearch在写入数据后立即可以进行搜索,无需额外的索引构建过程。 6. 多用途:除了搜索,Elasticsearch还广泛用于日志分析、监控、安全分析等多种场景。 在Windows环境下安装Elasticsearch 8.2.0...

Global site tag (gtag.js) - Google Analytics