序
本文主要讲如何使用使用docker搭建elasticsearch。
下载镜像
这里利用hangxin1940搭好的镜像,不过是es的1.4.2版本。
docker pull hangxin1940/docker-elasticsearch-cn:v1.6.0
启动容器
docker run -d -p 9200:9200 -p 9300:9300 --name es hangxin1940/docker-elasticsearch-cn:v1.6.0
查看es(这里的ip是docker的default machine的ip
)
访问http://192.168.99.100:9200/
{
status: 200,
name: "node1",
cluster_name: "cn-out-of-box",
version: {
number: "1.6.0",
build_hash: "cdd3ac4dde4f69524ec0a14de3828cb95bbb86d0",
build_timestamp: "2015-06-09T13:36:34Z",
build_snapshot: false,
lucene_version: "4.10.4"
},
tagline: "You Know, for Search"
}
查看集群状态
http://192.168.99.100:9200/_plugin/head/
也可以用命令行
curl -XGET http://192.168.99.100:9200/_cluster/health?pretty
返回
{
"cluster_name" : "cn-out-of-box",
"status" : "yellow",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 1,
"active_shards" : 1,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 1,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0
}
这里目前只是单节点的,后续弄成集群看看。
查看插件
http://192.168.99.100:9200/_plugin/oob
增删改查
增加
curl -XPUT 'http://192.168.99.100:9200/twitter/tweet/1' -d '{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elastic Search"
}'
返回
{"_index":"twitter","_type":"tweet","_id":"1","_version":1,"created":true}%
查询
curl -XGET 'http://192.168.99.100:9200/twitter/tweet/1'
返回
{"_index":"twitter","_type":"tweet","_id":"1","_version":1,"found":true,"_source":{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elastic Search"
}}%
高级查询:选择字段
curl -XGET 'http://192.168.99.100:9200/twitter/tweet/1?fields=message,user&pretty=true'
返回
{
"_index" : "twitter",
"_type" : "tweet",
"_id" : "1",
"_version" : 1,
"found" : true,
"fields" : {
"message" : [ "trying out Elastic Search" ],
"user" : [ "kimchy" ]
}
}
高级查询:选择格式
curl -XGET 'http://192.168.99.100:9200/twitter/tweet/1?fields=message,user&format=yaml'
返回
---
_index: "twitter"
_type: "tweet"
_id: "1"
_version: 1
found: true
fields:
message:
- "trying out Elastic Search"
user:
- "kimchy"
更新
curl -X PUT http://192.168.99.100:9200/twitter/tweet/1 -d '{"message": "hello world", "user": "codecraft"}'
返回
{"_index":"twitter","_type":"tweet","_id":"1","_version":2,"created":false}%
这个是覆盖更新,不是局部更新:
~ curl -XGET 'http://192.168.99.100:9200/twitter/tweet/1'
{"_index":"twitter","_type":"tweet","_id":"1","_version":2,"found":true,"_source":{"message": "hello world", "user": "codecraft"}}%
删除
curl -XDELETE 'http://192.168.99.100:9200/twitter/tweet/1'
返回
{"found":true,"_index":"twitter","_type":"tweet","_id":"1","_version":3}%
查看mapping
{
"twitter": {
"mappings": {
"tweet": {
"properties": {
"message": {
"type": "string"
},
"post_date": {
"type": "date",
"format": "dateOptionalTime"
},
"user": {
"type": "string"
}
}
}
}
}
}
索引分析
http://192.168.99.100:9200/twitter/_analyze?field=message&text=hello%20world
{
"tokens": [
{
"token": "hello",
"start_offset": 0,
"end_offset": 5,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "world",
"start_offset": 6,
"end_offset": 11,
"type": "<ALPHANUM>",
"position": 2
}
]
}