# elasticsearch入门篇-简介&安装&操作(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/luoluo01/article/details/89384615

简介

es 是啥(简介)

es是一个分析搜索引擎,底层用的是Apache Lucence 库实现的,为了使用方便 es通过RestFul api提供操作。
官方这样介绍:
分布式的实时文件存储,每个字段都被索引并可被搜索
分布式的实时分析搜索引擎
可以扩展到上百台服务器,处理PB级结构化或非结构化数据
就是有分是不可拓展存储量很大的搜索引擎

背景交代

shay这个程序猿,失业了,然后说是给妻子构建一个搜索引擎,然后就基于Lucene写了Compass并开源,后来找到工作了,由于工作需要一个分布式高性能搜索引擎 所以他决定重写Compass库使其成为一个独立的服务叫做Elasticsearch。然而这个牛人吧最后还是木有给他的妻子食谱搜索项目。Shay的妻子依旧等待着她的食谱搜索…… 这是一个悲伤的故事

逻辑结构vs mysql(怎么存储的)

|类型|库|表|行|列|
|–|--|–|--|
|mysql|库|表|行|列|
|es|index(名词非实际索引)|type|doc|field|
行的例子:
es的doc:
{
“name”: “John Doe”
}
转换mysql记录 name代表着列为name 这里只有一个doc就代表着一条记录

概念阐述(逻辑结构的解释)

index索引(名词):es在启动后可通过rest的形式操作api,其中index在es里代表着库的意思。
index索引(动词):代表着倒排索引,是真正的索引。
doc:在es中都是以json形式存储的 没行数据在es中以doc(文档)来表述。
field:json数据对应的key就是field,在关系型数据库中就是每一列。

安装&start

安装

命令行:

curl -L -O http://download.elasticsearch.org/PATH/TO/VERSION.zip <1>
unzip elasticsearch-$VERSION.zip
cd  elasticsearch-$VERSION

界面下载:
界面下载地址 可根据不同系统下载包。
之后就是解压操作了

start

cd esdir(es目录)
./bin/elasticsearch
为了可远程访问可通过
修改 config/network.host: 0.0.0.0
network.host: 0.0.0.0  (ps:注意:后面要空一格)

操作

索引操作

创建索引

curl -X PUT "192.168.191.100:9200/customer?pretty"
如果不方便可用postman仿操作

删除索引

curl -X DELETE "192.168.191.100:9200/customer?pretty"

获取

GET /_cat/indices?v 获取索引列表
以上是索引的crd操作

doc操作(crud)

####创建(or更新)索引 (cu)

PUT ip:host/customer/doc/1?pretty
(ps:customer代表索引,doc代表类型,1代表着id,dao倒排索引需要用到,rest风格)
   `{
      "name": "John Doe"
    }`

resp

    {
  "_index": "consumer",
  "_type": "doc",
  "_id": "1",
  "_version": 2,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 1,
  "_primary_term": 1
}

获取®

GET 192.168.191.100:9200/customer/doc/1?pretty
{
  "_index" : "customer",
  "_type" : "doc",
  "_id" : "2",
  "_version" : 1,
  "found" : true,
  "_source" : {
    "name" : "John Doe"
  }
}

获取除了通过索引还可以通过搜索的形式

GET /megacorp/employee/_search  (简易搜索)
GET /megacorp/employee/_search?q=name:Smith (根据字段搜索)
GET /megacorp/employee/_search
{
    "query" : {
        "match" : {
            "name" : "Smith"
        }
    }
} (表达式搜索)

删除(d)

DELETE 192.168.191.100:9200/customer/doc/1?pretty

以上是相关的doc的crud操作。

update常规操作

curl -X POST "192.168.191.100:9200/customer/doc/1/_update?pretty" -H 'Content-Type: application/json' -d'
{
  "doc": { "name": "Jane Doe" }
}
'

POST /customer/doc/1/_update?pretty
{
  "script" : "ctx._source.age += 5"
}

脚本更新 如果本身存在age字段可直接让age+5

批量操作

curl -X POST "localhost:9200/customer/doc/_bulk?pretty" -H 'Content-Type: application/json' -d'
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }

在当前路径下组一个accouts.json的数据
数据如下格式:

{"index":{"_id":"1"}}
{"account_number":1,"balance":39225,"firstname":"Amber","lastname":"Duke","age":32,"gender":"M","address":"880 Holmes Lane","employer":"Pyrami","email":"[email protected]","city":"Brogan","state":"IL"}
{"index":{"_id":"6"}}
{"account_number":6,"balance":5686,"firstname":"Hattie","lastname":"Bond","age":36,"gender":"M","address":"671 Bristol Street","employer":"Netagy","email":"[email protected]","city":"Dante","state":"TN"}
{"index":{"_id":"13"}}
{"account_number":13,"balance":32838,"firstname":"Nanette","lastname":"Bates","age":28,"gender":"F","address":"789 Madison Street","employer":"Quility","email":"[email protected]","city":"Nogal","state":"VA"}
{"index":{"_id":"18"}}
{"account_number":18,"balance":4180,"firstname":"Dale","lastname":"Adams","age":33,"gender":"M","address":"467 Hutchinson Court","employer":"Boink","email":"[email protected]","city":"Orick","state":"MD"}

curl -H “Content-Type: application/json” -XPOST ‘localhost:9200/bank/account/_bulk?pretty&refresh’ --data-binary "@accounts.json

批量操作分割符是 \n所以需要构造如上的数据。之后再查就能查到相应的数据了。
具体的批量操作可参照 _bluk api
批量操作能大量的减少网络开销,如果数据可组装的话 建议批量操作。

doc操作的注意事项

操作数据的实时性

es可以看成是几乎实时的,但是默认情况下是更新索引到搜索期待有1s的延迟,这是与mysql等很不同的一个地方。

doc 索引生成规则

指定id没有doc存在,索引会从已存在doc指向新的doc,
id不同 如果doc相同 会生成两个doc
如果不指定id 则es随机生成字符串(不可取)

doc update操作

底层不是就地更新文档,而是删除就文档,新文档重新生成index。

猜你喜欢

转载自blog.csdn.net/luoluo01/article/details/89384615