java中ElasticSearch搜索服务器正常使用执行流程

1,首先创建连接搜索服务服务器对象

对于演示应用程序,选择 Transport Client,并保持 Elasticsearch 执行最低级别的处理:

Client client = TransportClient
                .builder()
                .build()
                .addTransportAddress(
new InetSocketTransportAddress
(InetAddress.getByName("127.0.0.1"), 9300));

如果连接到一个 Elasticsearch 集群,构建器可以接受多个地址。(在本例中只有一个 localhost 节点。) 

TransportClient通过传输模式来连接到一个Elasticsearch的集群。它并不会加入到集群当中,而是会简单的得到一个或者更多的初始化的传输地址并且在每一个活动当中以轮询调度的方式来和它们通信。

2,创建索引(相当于关系型数据库中的数据库)


client.admin().indices().prepareCreate("blog").get();//创建索引操作
//client.admin().indices().prepareDelete("blog").get();// 删除索引

 

3,映射相关操作

// 构建映射的json描述文本
XContentBuilder builder = XContentFactory.jsonBuilder().startObject()
.startObject("article").startObject("properties")
.startObject("id").field("type", "integer")
.field("store","yes").endObject()
.startObject("title").field("type","string").field("store","yes").field("analyzer","ik").endObject()
.startObject("content").field("type","string").field("store","yes").field("analyzer","ik").endObject().endObject().endObject().endObject();

//相当于以下的格式

{    
       "article":{  
          "properties":{  
             "id":{  
                "type":"integer",  
                "store":"yes",
             },               
             "title":{
                "type":"string",

                "store":"yes",

                "analyzer":"ik"
                }              

             "content":{
                "type":"string",

                "store":"yes",

                "analyzer":"ik"
                }
             }                       
          }  
       }   
}

//将映射和索引绑定,获取映射对象
PutMappingRequest mapping =Requests.putMappingRequest("blog")
        .type("article").source(builder);

//添加映射
client.admin().indices().putMapping(mapping).get();

4,文档的相关操作

创建文档操作

1、 在 XContentBuilder 中构建 json 数据

//构建json数据
XContentBuilder builder = XContentFactory
                .jsonBuilder()
                .startObject()
                .field("id", 1)
                .field("title", "ElasticSearch")
                .field("content",
                        "全文搜索引擎,基于restful web接口。")
                .endObject();

// 建立文档对象
client.prepareIndex("blog", "article", "2").setSource(builder).get();

2、 对一个已经存在对象,转换为 json

//Article是实体类
Article article = new Article();
        article.setId(2);
        article.setTitle("搜索工作其实很快乐");
        article.setContent("我们希望我们的搜索解决。");

ObjectMapper objectMapper = new ObjectMapper();

// 建立文档
client.prepareIndex("blog2", "article", article.getId().toString())
.setSource(objectMapper.writeValueAsString(article)).get();

修改文档操作
client.prepareUpdate("blog2", "article", article.getId().toString())
.setDoc(objectMapper.writeValueAsString(article)).get();

删除文档操作

client.prepareDelete("blog2", "article", article.getId().toString()) .get();

5.关闭连接

client.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值