elasticsearch的研究与使用(一)

序言
产品中需要支持分词搜索,以前听说过elastic search的分布式搜索引擎,所以就动手研究下elastic search,以下的内容参考于https://www.elastic.co 的官方帮助文档。

安装

elastic search1.7的JDK版本至少为1.7,确认本机是否安装了JDK并设置了环境变量

java -version
这里写图片描述
echo $JAVA_HOME
这里写图片描述

下载es
curl -L -O https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.tar.gz

解压
tar -xvf elasticsearch-1.7.1.tar.gz

启动es,当然这是单机的版本
cd elasticsearch-1.7.1/bin

./elasticsearch或者为你的es集群、节点分别设置名称
这里写图片描述
这样es的安装和启动就完成了。


监控ES运行状态

1 集群健康状态
curl ‘localhost:9200/_cat/health?v’
这里写图片描述
es的集群状态有三种颜色:绿色和黄色是可工作的,只是黄色有些分片没有被分配,红色表示有些数据不可用。

2 节点健康状态
curl ‘localhost:9200/_cat/nodes?v’
这里写图片描述


Java API

es的maven 路径
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>1.7.1</version>
</dependency>

Node Client 此中方式当前客户端节点会加入es集群中
Copy es的conf目录下elastaicsearch.yml到src/main/resources
这里写图片描述
这里写图片描述
这里写图片描述

Transport Client 不会加入集群

    Settings settings = ImmutableSettings.settingsBuilder()
            .put("cluster.name", "my_es").build();
    TransportClient client = new TransportClient(settings);
    client.close();

 
 
创建文档
es文档格式要求为json形式,有几种方式去生成json格式的文档
1 手动的生成json形式,也就是自己拼字符串
2 可以传入Map作为参数,map会自动的转换为json格式
3 可以用第三方库序列化bean为json格式
4 es内置的帮助类 XContentFactory.jsonBuilder()
 
 
笔者选用第四种方式
private static String createDocument() throws Exception{
XContentBuilder builder = jsonBuilder()
.startObject()
.field(“user”, “libingxin”)
.field(“postData”, new Date())
.field(“message”, “this is my test message”)
.endObject();

    return builder.string();

}

这里写图片描述
验证结果是否正确
这里写图片描述

 
 
查询文档
这里写图片描述

 
 
删除文档
该操作允许在相同节点的不同线程上执行
这里写图片描述

 
 
更新文档
这里写图片描述
可以发现数据的version由1变成了2,证明更改成功

 
 
文档合并
可以在既有的文档中增加额外的字段
这里写图片描述
查看合并后的数据
这里写图片描述

 
 
批量操作
只走一次http请求,批量操作中允许添加和删除文档
这里写图片描述
此外还可以es还提供了批量操作的定制化,可以监听批量提交的前后以及失败事件,批量提交的个数,刷新时间等,可以参考https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/bulk.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值