zoukankan      html  css  js  c++  java
  • Elasticsearch 自定义映射

    尽管在很多情况下基本域数据类型 已经够用,但你经常需要为单独域自定义映射 ,特别是字符串域。自定义映射允许你执行下面的操作:

    • 全文字符串域和精确值字符串域的区别
    • 使用特定语言分析器
    • 优化域以适应部分匹配
    • 指定自定义数据格式
    • 还有更多

    域最重要的属性是 type 。对于不是 string 的域,你一般只需要设置 type :

    1 {
    2     "number_of_clicks": {
    3         "type": "integer"
    4     }
    5 }

    默认, string 类型域会被认为包含全文。就是说,它们的值在索引前,会通过 一个分析器,针对于这个域的查询在搜索前也会经过一个分析器。

    string 域映射的两个最重要 属性是 index 和 analyzer 。

    index属性

    index 属性控制怎样索引字符串。它可以是下面三个值:

    analyzed
    首先分析字符串,然后索引它。换句话说,以全文索引这个域。
    not_analyzed
      索引这个域,所以它能够被搜索,但索引的是精确值。不会对它进行分析。
    no
    不索引这个域。这个域不会被搜索到。

    string 域 index 属性默认是 analyzed 。如果我们想映射这个字段为一个精确值,我们需要设置它为 not_analyzed :

    1 {
    2     "tag": {
    3         "type":     "string",
    4         "index":    "not_analyzed"
    5     }
    6 }

    analyzer

    对于 analyzed 字符串域,用 analyzer 属性指定在搜索和索引时使用的分析器。默认, Elasticsearch 使用 standard 分析器, 但你可以指定一个内置的分析器替代它,例如 whitespace 、 simple 和 `english`:

    1 {
    2     "tweet": {
    3         "type":     "string",
    4         "analyzer": "english"
    5     }
    6 }

    注意:analyzer和analyzed分别代表什么意思。analyzed是指该属性是否全文检索分词,而analyzer代表该属性使用什么方式进行检索分词。

    Reference :

    【1】https://www.elastic.co/guide/cn/elasticsearch/guide/current/mapping-intro.html

  • 相关阅读:
    lufylegend:图形变形3
    javascript: Math.sin() cos() 用法
    lufylegend:图形变形2
    lufylegend:图形变形1
    lufylegend:图片的加载和显示
    lufylegend基础知识1
    canvas使用3
    canvas使用2
    canvas使用1
    javascript:addEventListener
  • 原文地址:https://www.cnblogs.com/hoojjack/p/7860724.html
Copyright © 2011-2022 走看看