ES入门

ES基础:

索引(index):逻辑存储,相当于关系型数据库的表。每个索引有一或多个分片(shard) 每个分片有多个副本(replica)

分片(shard):单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个分片(shard),分布在多台服务器上存储。有了分片(shard)就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个分片(shard)都是一个lucene index

副本(replica): 任何一个服务器随时可能宕机,此时分片(shard)可能就会丢失,因此可以为每个分片(shard)创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。

文档(document):es中的最小数据单位,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以存储多个document。一个document里面有多个fieId,每个field就是一个数据字段。

面向文档存储:

(1)应用系统的数据结构都是面向对象的,复杂的

(2)对象数据存储到数据库中,只能拆解开来,变为扁平的多张表,每次查询的时候还得还原回对象格式, 相当麻烦

(3)ES是面向文档的,文档中存储的数据结构,与面向对象的数据结构是一样的,基于这种文档数据结构,es可以提供复杂的索引,全文检索,分析聚合等功能

(4)ES的document用JSON数据格式来表达

映射(mapper)

文档中的每个字段根据不同类型做相对应的分析。

ES核心概念 vs. 数据库核心概念

索引(indices)-------------Table 数据表

文档(Document)--------Row 行

字段(Field)-------Columns 列

kibana ES操作

基础操作

1、查看集群健康:GET /_cat/health

 2、查看索引:GET /_cat/indices?v

3、创建索引:PUT /test_index?pretty

4、删除索引:DELETE /test_index?pretty

5、插入数据:PUT /index/type/id

ES会自动建立index和type,可以不提前创建,而且ES会默认对document的每个fieId都建立倒排索引,让其可以被搜索。还是自动设置字段(fieId)类型

 

6、修改: 

(1)、替换方式(替换必须带所有的信息) PUT / /blog01/article/1

 

 

 (2)、更新方式 POST /blog01/article/2/_update

 

 

 

7、查询:GET /blog01/article/2

 

8、删除:DELETE /blog01/article/1

简单搜索

query string search

search参数http附带

took:整个搜索请求花费了多少毫秒

timed_out:是否超时

_shards:切片

hits.total:本次搜索,返回了几条结果
hits.max_score:本次搜索的所有结果中,最大的相关度分数是多少,每一条document对于search的相关度,越相关,_score分数越大,排位越靠前

 

GET /blog01/article/_search?q=desc:kibana
{
  "took": 4,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.2876821,
    "hits": [
      {
        "_index": "blog01",
        "_type": "article",
        "_id": "2",
        "_score": 0.2876821,
        "_source": {
          "id": "2",
          "title": "kibana ",
          "desc": "kibana "
        }
      }
    ]
  }
}

query DSL

Domain Specified Language

带json请求体查询

GET /blog01/article/_search
{
  "query": {
    "match_all": {}
  }
}

query filter

bool可以封装多个条件 “must”必须匹配 “filter”过滤

 

 

GET /blog01/article/_search
{
  "query" : {
        "bool" : {
              "must" : {
               "match" :{
                  "desc" : "kibana"
               }
              }    
        }
    }
}

全文检索 full text search

会根据两个词 去倒排索引查找 匹配上任意一个就会返回 匹配度最高的文档排在前面

GET /blog01/article/_search
{
  "query" : {
               "match" :{
                  "desc" : "kibana test"
               }
    }
}

短语搜索 phrase search

两个词必须都包含

GET /blog01/article/_search
{
  "query" : {
               "match_phrase" :{
                  "desc" : "kibana test"
               }
    }
}

高亮结果 highlight search

GET /blog01/article/_search
{
  "query" : {
               "match" :{
                  "desc" : "kibana"
               }
               
    },
    "highlight":{
                 "fields":{
                   "desc" :{}
                 }
    } 
}

 

posted @ 2020-05-16 10:15  泽文工作室  阅读(153)  评论(0)    收藏  举报