ElasticSearch创建文档

ElasticSearch创建文档

创建文档有两种途径

  • 直接在XcontentBuilder构建json数据,创建文档。
// 描述json 数据
    /*
     * {id:xxx, title:xxx, content:xxx}
     */
    XContentBuilder builder = XContentFactory
            .jsonBuilder()
            .startObject()
            .field("id", 1)
            .field("title", "ElasticSearch是一个基于Lucene的搜索服务器")
            .field("content",
                    "它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。")
            .endObject();
    // 建立文档对象
    client.prepareIndex("blog1", "article", "1").setSource(builder).get();
  • 对于一个已经存在的对象,将其转换为json,创建文档

创建一个实体类Article,将Article转换为json数据,使用JackSon进行json转换。

public class Article {
    private Integer id;
    private String title;
    private String content;
}

Article实体类略去了set/get方法和toString方法

在pom文件引入jackson:

- 1.X

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
    </dependency>
    <dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

- 2.X

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.8.1</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.1</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.8.1</version>
</dependency>

Java代码实现文档添加

Article article = new Article();
article.setId(2);
article.setTitle("搜索工作其实很快乐");
article.setContent("我们希望我们的搜索解决方案要快,我们希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。Elasticsearch旨在解决所有这些问题和更多的问题。");

ObjectMapper objectMapper = new ObjectMapper();

// 建立文档
client.prepareIndex("blog2", "article", article.getId().toString())
.setSource(objectMapper.writeValueAsString(article)).get();
上一篇:RESTful风格


下一篇:org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return va