1.基本概念

类比传统的关系型数据库领域来说,索引相当于SQL中的一个数据库,或者一个数据存储方案(schema)。索引由其名称(必须为全小写字符)进行标识,并通过引用此名称完成文档的创建、搜索、更新及删除操作。一个ES集群中可以按需创建任意数目的索引。

类型(Type)

类型相当于“表”

文档(Document)

基于JSON格式进行表示。文档由一个或多个域组成,每个域拥有一个名字及一个或多个值,有多个值的域通常称为“多值域”。每个文档可以存储不同的域集,但同一类型下的文档值应该有某种程度上的相似之处。




ES 冻结索引是什么意思 es索引详解_Elastic


2.查询类型

文档中,域的数据存储时支持“string”、“numbers”、“Booleans”和“dates”几种类型,不同类型的数据在索引时是略有区别的。在创建文档时,Elasticsearch会通过检查域的值来动态为其创建mapping,可通过Mapping API来查看type的mapping,其访问端点是_mapping。

精确值(Exact values)查询:就是指数据未曾加工过的原始值——过滤DSL(filter DSL)

Full-text查询:则用于引用文本中的数据——查询DSL(query DSL)

3.DSL

Filter DSL计算及过滤速度较快,且适于缓存,因此可有效提升后续查询请求的执行速度。

Query DSL不仅要查找匹配的文档,还需要计算每个文件的相关度分值,因此为更重量级的查询,其查询结果不会被缓存

Queries用于查询上下文,而filters用于过滤上下文,不过,Elasticsearch的API也支持此二者合并运行。组合查询可用于合并查询子句,组合过滤用于合并过滤子句,然而,Elasticsearch的使用习惯中,也常会把filter用于query上进行过滤。不过,很少有机会需要把query用于filter上的。

4.查询语法


ElasticSearch 基本查询语法blog.csdn.net

ES 冻结索引是什么意思 es索引详解_ES 冻结索引是什么意思_02


一个查询语句的典型结构:


{
    QUERY_NAME: {
        ARGUMENT: VALUE,
        ARGUMENT: VALUE,...
    }
}


如果是针对某个字段,那么它的结构如下:


{
    QUERY_NAME: {
        FIELD_NAME: {
            ARGUMENT: VALUE,
            ARGUMENT: VALUE,...
        }
    }
}


查询语句形式:

  • 叶子语句(Leaf clauses) (就像 match 语句) 被用于将查询字符串和一个字段(或者多个字段)对比。
  • 复合(Compound) 语句 主要用于 合并其它查询语句。 比如,一个 bool 语句 允许在你需要的时候组合其它语句,无论是 must 匹配、 must_not 匹配还是 should 匹配,同时它可以包含不评分的过滤器(filters)

5.检索结果描述


https://www.elastic.co/guide/cn/elasticsearch/guide/current/empty-search.htmlwww.elastic.co

ES 冻结索引是什么意思 es索引详解_elasticsearch: 权威指南_03


空搜索 | Elasticsearch: 权威指南 | Elastic

空搜索 | Elasticsearch: 权威指南 | Elasticwww.elastic.co

ES 冻结索引是什么意思 es索引详解_elasticsearch: 权威指南_03


bool/must条件检索


GET /jd/_search
{
  "track_total_hits": true, 
  "query": {
    "bool": {
      "must": [
        {"bool": {"should": [
                     {"range": {"InputTime": {"gte": "now-1y"}}}, 
                     {"term": {"IsDisabled": "false"}}
                   ]
                 }
        }
      ]
    }
  }
}


GET recruit-center-resume/_search
{
  "query": {
    "bool": {
      "must": [
        {"term": {"ResumeType": 0}}
      ]
    }
  }
}