elasticSearch学习笔记

仅需要jdk,下载解压即可,最好修改下elasticsearch.yml

cluster.name
node.name

es有非常丰富的插件,建议安装下面几个

bigdesk

资源监控和集群管理插件
bin/plugin -install lukas-vlcek/bigdesk
http://127.0.0.1:9200/_plugin/bigdesk

elasticsearch-head

数据查询插件
bin/plugin -install mobz/elasticsearch-head
http://localhost:9200/_plugin/head/

  

elasticsearch-kopf

集群资源查看和查询插件,和head一起用吧,head偏数据查询一点
bin/plugin --install lmenezes/elasticsearch-kopf
http://localhost:9200/_plugin/kopf

es是文档数据库,和一般rdbms的类比

关系数据库     ⇒ 数据库 ⇒ 表    ⇒ 行    ⇒ 列(Columns)
Elasticsearch  ⇒ 索引   ⇒ 类型  ⇒ 文档  ⇒ 字段(Fields)

具体的可以通过head插件查看

建立3个测试数据

PUT /megacorp/employee/1
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}

PUT /megacorp/employee/2
{
    "first_name" :  "Jane",
    "last_name" :   "Smith",
    "age" :         32,
    "about" :       "I like to collect rock albums",
    "interests":  [ "music" ]
}

PUT /megacorp/employee/3
{
    "first_name" :  "Douglas",
    "last_name" :   "Fir",
    "age" :         35,
    "about":        "I like to build cabinets",
    "interests":  [ "forestry" ]
}

es的查询非常强大,举个让cassandra蛋疼的模糊查询的例子

POST /megacorp/employee/_search
{
  "fields": [
    "first_name"
  ],
  "query": {
    "wildcard": {
      "last_name": "*mi*"
    }
  }
}

fields是显示哪些字段,具体的dsl看http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-query.html

再贴一个and查询

POST /megacorp/employee/_search
{
"query": { "bool": { "must": [ { "wildcard": { "last_name": "*mi*" } }, { "match": { "first_name": "John" } } ] } } }

关于es的集群,虽说是主从配置,但是用起来,基本上不需要考虑这些问题,master,slave的切换是es内部处理的,对外面完全透明,可以用bigdesk插件查看;集群支持动态添加节点,和cassandra差不多,非常方便。

创建索引(数据库)的时候,可以指定shards和replicas的数量,也可以动态修改replicas的数量,这对于需要横向扩展的时候,非常有用。

贴一个大神的翻译,非常感谢他的辛苦工作