Elasticsearch 笔记

索引可以认为是记录的优化集合,每个记录都是字段的集合,这些字段是包含数据的键值对。

Index templates定义了在创建新索引时可以自动应用的settings和mappings。 Elasticsearch根据 与索引名称匹配的index pattern 将模板应用于创建新索引。 index_patterns 是创建索引过程中用于匹配索引名称的通配符表达式数组。 多个索引模板可以与一个索引匹配,在这种情况下,设置和映射都将合并到该索引的最终配置中。 可以使用order参数控制合并的顺序,首先应用较低的order,然后较高的order覆盖这些配置。

1、Mapping 是定义记录及其包含的字段的存储和索引方式的过程。 例如,使用Mapping 定义:

       哪些字符串字段应视为 full text 字段。

       哪些字段包含数字,日期或地理位置。

      日期值的格式。

      自定义规则来控制动态添加字段的映射。

Mapping 将索引中的记录分为逻辑组,并指定字段的特征。 这些特征包括字段的可搜索性,以及是否被标记化或分解成单独的单词

每个索引都有一个mapping type ,该mapping type确定如何对文档建立索引。mapping type 在6.0.0版本被废弃。

映射参数 fields : 为不同的目的以不同的方式为同一字段建立索引通常很有用。 这是多领域的目的

PUT my_index
{
  "mappings": {
    "properties": {
      "city": {
        "type": "text",
        "fields": {
          "keyword": { 
            "type":  "keyword"
          }
        }
      }
    }
  }
}

 如上图所示, city字段是 text类型, 而city.keyword 是keyword类型。

2、

Elasticsearch按相关性得分对匹配的搜索结果进行排序,该得分衡量每个记录与查询的匹配程度。相关性分数在搜索API的_score元字段中返回。 _score越高,记录越相关。 尽管每种查询类型可以不同地计算相关性分数,但是分数计算还取决于查询子句是在query context中运行还是在filter context中运行

query context:

在查询上下文中,查询子句回答以下问题:“此文档与该查询子句的匹配程度如何?” 除了确定文档是否匹配之外,查询子句还计算_score元字段中的相关性得分。

 filter context:

在过滤器上下文中,查询子句回答问题“此记录是否与此查询子句匹配?” 答案是简单的“是”或“否”,即不计算相关分数。 过滤器上下文主要用于过滤结构化数据

constant_score 查询:

包装filter查询,并返回相关分数等于boost参数值的每个匹配记录。 boost参数值默认为1.0

3、

索引模板允许定义将自动应用于创建新索引的模板。 模板包括设置和映射,以及一个简单的模式模板,该模板控制是否将模板应用于所创建的索引

4、聚合

   ①每个bucket 都与一个key和一个记录标准相关联。 执行聚合时,将对上下文中的每个记录评估所有的bucket条件,并且当条件匹配时,该记录将被视为“落入”相关bucket。(bucket应该就是用来分组的)

  ②pipeline  : Aggregations that aggregate the output of other aggregations and their associated metrics

聚合可以嵌套

聚合的基本结构:

"aggregations" : {
    "<aggregation_name>" : {
        "<aggregation_type>" : {
            <aggregation_body>
        }
        [,"meta" : {  [<meta_data_body>] } ]?
        [,"aggregations" : { [<sub_aggregation>]+ } ]?
    }
    [,"<aggregation_name_2>" : { ... } ]*
}

4、

Text数据类型 (该类型的字段在索引时会被分词)

对这些字段进行分析,即将它们通过分析器处理,以在将其编入索引之前将字符串转换为单个term的列表。 通过分析的过程,Elasticsearch可以在每个全文本字段中搜索单个单词。

默认的标准分析器按如下方式更改text字段值:

    删除大多数标点符号
    将剩余内容分为单个词,称为tokens 
    小写tokens 

为了更好地搜索text字段,match查询还会在执行搜索之前分析您提供的搜索term。 这意味着match查询可以在text字段中搜索分析的token,而不是确切的term。

term查询不会分析搜索的term。 term查询仅搜索您提供的确切term。 这意味着在搜索text字段时,term查询可能会返回不良结果或没有结果。

 

Keyword数据类型(该类型的字段在索引时不会被分词)

Keyword字段 用于索引结构化内容(例如ID,电子邮件地址,主机名,状态代码,邮政编码或标签)。它们通常用于过滤,排序和聚合。keyword字段只能按其确切值进行搜索。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值