ElasticSearch入门篇

ElasticSearch入门篇

一、安装部署

1.1 版本选择

//www.greatytc.com/p/c5c3e834c028

1.2 单机版

  1. 下载解压

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.1.tar.gz
    tar -zxvf elasticsearch-6.6.1.tar.gz -C /opt/es/
    
  2. ES不能在ROOT账户下启动,必须创建子账户

    useradd es   创建用户
    passwd es    设置密码
    chown -R es:root /opt/es/    给文件指定所属用户和用户组
    chmod -R 770 /opt/es/    修改文件夹的权限
    su es    切换到es账户,su是switch user的缩写
    
  1. 修改配置vim elasticsearch.yml

    ####### 若要外界能访问到虚拟机上的ES,必须要配置network.host #######
    network.host: 192.168.114.100
    ####### ES绑定端口 #######
    http.port: 9200
    
  2. ./elasticsearch -d 后台启动

    ./elasticsearch -h 了解启动脚本可用选项
    ps -ef | grep elastic 查找ES进程
    kill -9 进程号 杀掉ES进程
    启动日志在 elasticsearch-6.6.1/logs/elasticsearch.log
    curl 192.168.114.100:9200 启动成功
    
2019022201.png
  1. 安装ES-Head

(1)安装NodeJs

由于elasticsaerch-head是由node.js编写的,Linux需确保安装了node6以上版本 .
到 Node.js 官网(https://nodejs.org/en/download/) 选择要下载的编译版本Linux Binaries (x64)

1、切换到安装路径
cd /usr/local/src
wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.xz
2、解压缩文件包
xz -d node-v10.13.0-linux-x64.tar.xz
tar -xvf node-v10.13.0-linux-x64.tar
3、node 环境配置
vim /etc/profile
在最下面加入
# node
export NODE_HOME=/usr/local/src/node-v10.13.0-linux-x64
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules
source /etc/profile    // 使配置文件生效
4、查看 Node.js 是否安装成功
node -v

(2)安装elasticsaerch-head

github官网 https://github.com/mobz/elasticsearch-head,下载mobz开头的elasticsaerch-head
解压后进入elasticsaerch-head-master,
npm install 安装结束出现npm ERR!不用管
npm run start 启动在9100

(3) 连接ES-head控制台

在elasticsearch.yml中加入下面的配置才能链接到控制台
http.cors.enabled: true http.cors.allow-origin: "*"
然后重启尝试连接
2019022203.png

1.3 分布式部署

在另外两台机子上,拷贝es包、config下elasticsearch.yml与jvm.options,赋予权限,解决启动报错。

修改配置如下

##################### master配置 #######################
network.host: 192.168.114.100
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: gas
node.name: master
node.master: true
discovery.zen.ping.unicast.hosts: ["192.168.114.100","192.168.114.110","192.168.114.120"]

##################### slave1配置 #######################
network.host: 192.168.114.110
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: gas
node.name: slave1
discovery.zen.ping.unicast.hosts: ["192.168.114.100","192.168.114.110","192.168.114.120"]

##################### slave2配置 #######################
network.host: 192.168.114.120
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: gas
node.name: slave2
discovery.zen.ping.unicast.hosts: ["192.168.114.100","192.168.114.110","192.168.114.120"]

若是伪分布式,则指定不同的http.port,discovery.zen.ping.unicast.hosts只配置一项IP即可。依次用子账户启动三台ES。

2019022301.png

二、基本API操作

3.1 创建索引

|
2019022302.png
2019022303.png
2019022304.png

创建结构化索引

PUT http://192.168.114.100:9200/person

{
    "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 1
    },
    "mappings": {
        "person": {
            "properties": {
                "name": {
                    "type": "text"
                },
                "age": {
                    "type": "integer"
                },
                "birthday": {
                    "type": "date",
                    "format": "yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                },
                "country": {
                    "type": "keyword"
                }
            }
        }
    }
}

注:
text:会分词,然后进行索引
       支持模糊、精确查询
       不支持聚合
keyword:不进行分词,直接索引
       支持模糊、精确查询
       支持聚合

常用的参数类型定义&赋值demo

类型 参数定义 赋值
text "name":{"type":"text"} "name": "zhangsan"
keyword "tags":{"type":"keyword"} "tags": "abc"
date "date":{"type": "date"} "date":"2015-01-01T12:10:30Z"
long "age":{"type":"long"} "age" :28
double "score":{"type":"double"} "score":98.8
boolean "isgirl": { "type": "boolean" } "isgirl" :true
ip "ip_addr":{"type":"ip"} "ip_addr": "192.168.1.1"
geo_point "location": {"type":"geo_point"} "location":{"lat":40.12,"lon":-71.34}

3.2 文档操作

【插入文档】
PUT http://192.168.114.100:9200/person/person/1
{
                "name" : "张飞",
                "age" : 20,
                "birthday" : "1998-02-02",
                "country" : "大汉"
 }
或者 POST http://192.168.114.100:9200/person/person
{
                "name" : "刘备",
                "age" : 24,
                "birthday" : "1994-02-02",
                "country" : "大汉"
 }
POST不用指定文档id,会自行生成唯一字符串
2019022501.jpg
【修改文档】
可以直接PUT指定对应的文档ID替换那条数据,
也可以
POST http://192.168.114.100:9200/person/person/1/_update
{
            "doc":{
                "name":"关二爷"
            }
}
【删除文档】
DELETE http://192.168.114.100:9200/person/person/1
删除索引,同时也会把所有文档删除
DELETE http://192.168.114.100:9200/person

3.3 查询数据

【简单查询】
 GET http://192.168.114.100:9200/person/person/1
 
 {
  "_index": "person",
  "_type": "person",
  "_id": "1",
  "_version": 3, // ---该条文档修改的次数
  "_seq_no": 2,
  "_primary_term": 1,
  "found": true,
  "_source": {
    "name": "关二爷",
    "age": 20,
    "birthday": "1998-02-01",
    "country": "大汉"
  }
}
【条件查询】
POST  http://192.168.114.100:9200/person/person/_search
{
                "query":{
                    "match_all":{}
                }
}

{
  "took": 10,  //--- 查询花费时间ms
  "timed_out": false,
  "_shards": {
    "total": 3,
    "successful": 3,
    "skipped": 0,
    "failed": 0
  },
  "hits": { //--- hits命中的数据
    "total": 2,
    "max_score": 1,
    "hits": [
      {
        "_index": "person",
        "_type": "person",
        "_id": "5Tk8ImkB6d7OxUUbp0wf",
        "_score": 1,
        "_source": {
          "name": "刘备",
          "age": 24,
          "birthday": "1994-02-02",
          "country": "大汉"
        }
      },
      {
        "_index": "person",
        "_type": "person",
        "_id": "1",
        "_score": 1,
        "_source": {
          "name": "关二爷",
          "age": 20,
          "birthday": "1998-02-01",
          "country": "大汉"
        }
      }
    ]
  }
}

【排序分页】
默认排序规则是按_score降序,若查询指定排序规则后,则返回的数据中_score变为null
POST  http://192.168.114.100:9200/person/person/_search
{
    "query": {
        "match": {
     "country": "东吴"  // 包含关键词
  }
    },
    "sort": [{
        "birthday": {
            "order": "desc" // 按生日降序
        }
    }],
    "from": 0, // 从第一条开始
    "size": 10 // 取10条
}

聚合查询会专列一篇博客深入讲解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,454评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,553评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,921评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,648评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,770评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,950评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,090评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,817评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,275评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,592评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,724评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,409评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,052评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,815评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,043评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,503评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,627评论 2 350