elasticsearch初识

/ 工具和中间件 / 2 条评论 / 1240浏览

elasticsearch

Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

安装

{
  "name" : "APh0VMI",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "IvfX3iH1QRO-7TNTznxBTA",
  "version" : {
    "number" : "6.2.2",
    "build_hash" : "10b1edd",
    "build_date" : "2018-02-16T19:01:30.685723Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Kibana

Kibana 是为 Elasticsearch设计的开源分析和可视化平台,可以很方便地以Restful 风格向 ElasticSearch 服务器提交请求

安装

GET /_cat/health?v

Kibana索引

PUT 表示增加
GET 表示获取
DELETE 表示删除
POST表示更新
PUT /imwj?pretty  //增加一个索引名称为imwj

GET /_cat/indices?v  //显示所有的索引

DELETE /imwj?pretty  //删除指定索引

中文分词器

D:\elasticsearch-6.2.2\bin\elasticsearch-plugin install file:\\\\D:\elasticsearch-6.2.2\elasticsearch-analysis-ik-6.2.2.zip
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.2/elasticsearch-analysis-ik-6.2.2.zip
http://localhost:5601/app/kibana#/dev_tools/console?_g=()
GET _analyze
{
  "analyzer":"ik_max_word",
  "text":"喜欢一个人"
}

Kibana文档管理

PUT /imwj/product/1?pretty
{
  "name": "蜡烛"
}
GET /imwj/product/1?pretty
PUT /imwj/product/1?pretty
{
  "name": "红色蜡烛"
}
或
POST /imwj/product/1/_update?pretty
{
  "doc": { "name": "蓝色蜡烛" }
}
DELETE /imwj/product/1?pretty

Kibana批量导入

使用这种方式能够插入的上限较小,通过curl.exe来插入则比较快

POST _bulk
{"index":{"_index":"imwj","_type":"product","_id":10001}}
{"code":"540785126782","price":398,"name":"房屋卫士自流平美缝剂瓷砖地砖专用双组份真瓷胶防水填缝剂镏金色","place":"上海","category":"品质建材"}
{"index":{"_index":"imwj","_type":"product","_id":10002}}
{"code":"24727352473","price":21.799999237060547,"name":"艾瑞泽手工大号小号调温热熔胶枪玻璃胶枪硅胶条热溶胶棒20W-100W","place":"山东青岛","category":"品质建材"}
{"index":{"_index":"imwj","_type":"product","_id":10003}}
GET /imwj/_search
{
  "query":{"match_all":{}}
}

Kibana使用curl.exe批量导入

curl -H "Content-Type: application/json" -XPOST "localhost:9200/imwj/product/_bulk?refresh" --data-binary "@products.json"
GET /imwj/_search
{
    "query": { "match_all": {} }
}

Kibana查询语句

GET /imwj/_search
{
  "query":{"match_all":{}}
}
GET /imwj/_search
{
  "query":{"match_all": {}},
  "sort": [
    { "_id":"desc"}
  ]
}
GET /imwj/_search
{
  "query": {"match_all": {}},
  "_source": ["name", "price"]
}
GET /imwj/_search
{
  "query":{"match":{"name":"时尚连衣裙"}}
}
GET /imwj/_search
{
  "query":{"match_all": {}},
  "from": 1,
  "size": 3,
  "sort": {"_id":{"order":"desc"}}
}

Kibana聚合

第一个size:0表示 不用显示每条数据,第二个size:3表示分组数据显示3条
相当于sql语句:select count(*),place from product group by place limit 0,3

GET /imwj/_search
{
  "size": 0,
  "aggs": {
    "group_by_place":{
      "terms":{
        "field": "place.keyword",
        "size": 100
      }
    }
  }
}