ElasticSearch(一)

ElasticSearch(一)

1.安装 部署 启动
单机节点的:
要求 jdk至少1.7
上传服务器 tar -xvf 解压 cd到bin目录 elasticsearch启动
默认的http访问端口9200 传输协议端口9300
访问web端 出现 这个即启动成功:

{
  "status" : 200,  //返回状态
  "name" : "Midgard Serpent", //随机名字
  "cluster_name" : "elasticsearch",   //集群名字  当前是单节点
  "version" : { //版本号
    "number" : "1.4.4",
    "build_hash" : "c88f77ffc81301dfa9dfd81ca2232f09588bd512",
    "build_timestamp" : "2015-02-19T13:05:36Z", //创建时间
    "build_snapshot" : false,
    "lucene_version" : "4.10.3"  //lucene版本
  },
  "tagline" : "You Know, for Search"//tag提示
}

2.简单介绍
关系型数据库 有:database数据库->table表->row行->column列
ElasticSearch是: index索引库->type类型-doucument文本(对象)->field字段

3.具体操作
ElasticSearch是rest风格的
当前先用curl 命令来操作 之后用java api再介绍 curl大家都不陌生吧 模拟http操作 有 -GET -XPUT -XPOST -XDELETE 等操作 当然 -d 是传参数 post类似于新增 put类似于更新 put必须给定具体的资源
1.创建一个索引库

   curl -XPUT 'http://主机:9200/索引库名字'       //put和post都可以

2.创建一个索引

 curl -XPOST 'http://主机:9200/索引库名字/type名字/给定一个id'   -d    {"name":"hr","age":28}  //json类型的参数

3.查询索引

//查询某一个
curl -XGET 'http://主机:9200/索引库名字/type名字/查询的id?pretty' //拼接pretty 为了json格式好看
//查询所有索引  默认前10条
curl -XGET 'http://主机:9200/_search?pretty'  //可以跟索引库 和type

Json格式是这样的:

 {
      "_index" : "hrdatabase",
      "_type" : "emp",
      "_id" : "1",
      "_score" : 1.0,
      "_source":{"name":"hr","age":14}
    }

想查某一项 用rest 拼在后面 比如source 查询的id/_source或者再精确点id?_source=name

根据条件查询 后面拼接?q(query)=键值对(用冒号)

  主机:9200/_search?q=name:hr

还可以通过DSL查询 跟-d

主机:9200/_search?q=name:hr   -d   '{"query":{"match":{"name":"hr"}}}'
即:
curl -XGET 'http://localhost:9200/_search?pretty'  -d   '{"query":{"match":{"name":"hr"}}}'

多个查询 _mget json格式固定

curl -XGET 'http://localhost:9200/_mget'  -d   '{"docs":[{"_index":"hrdatabase","_type":"emp","_id":1}]}'
//可以跟多个对象  如果url给定了 index type则不用写
//还可以跟_source:查询的字段
//还可以只查id
curl -XGET http://localhost:9200/索引库/emp/_mget?pretty -d '{"ids":["1","2"]}'

4.索引更新
更新会修改版本号
整条数据更新:用原先的XPUT XPOST 会先将原id数据标记为删除状态 此时再也查不到原先的数据 es会在添加新数据的时候自动删除
局部更新:必须用post _update 给定-d

 id/_update -d '{"doc":{"name":"hrr","city":"bj"}}'

5.删除索引

-XDELET 操作 根据id可以删除

根据查询条件的删除: -XDELETE _query ?q=

curl -XDELETE 'localhost:9200/hrdatabase/emp/_query?q=name:fff'

DSL删除 -d参数
curl -XDELETE 'http://localhost:9200/hrdatabase/emp/_query' -d '{
    "query" : {
        "term" : { "name" : "fff" }
    }
}'

删除多个索引库  多个type 后面跟,  hrdatabase,hrdatabase2
删除所有_all

6.批量操作 bulk
我踩的一个坑就是 json 两边的 ” 最后一个’ 必须放在回车后面
不然 只能执行第一条

curl -XPOST 'http://localhost:9200/_bulk' -d '{"index":{"_index":"hrdatabase","_type":"emp","_id":11}}
{"name":"zs","age":36}
'

放在一个文件中 
--data-binary  @文件名

7.更新的时候 是乐观锁更新
有一个版本号 version
_update?version=当前版本号 才能更新成功
外部版本号
_update?version_type=external&version=比当前版本号大就行 且会修改版本号

8.查看集群的状态

http://192.168.80.88:9200/_cluster/health?pretty

9.索引库的分片
默认是5个分片 一个副本
可以在创建索引库的时候就指定分片数
如果已经创建索引库 则不能修改分片数
创建时指定分片数量:

curl -XPOST 'http://localhost:9200/索引库名称'  -d '{"settings":{"number_of_shards":3}}' //分成3片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值