04.Elasticsearch应用(四)

发布于:2024-01-25 ⋅ 阅读:(132) ⋅ 点赞:(0)

Elasticsearch应用(四)

1.什么是索引

  • 索引是文档的容器,是一类文档的结合
  • 索引是一个逻辑命名空间,它映射到一个或多个主分片,并且可以具有零个或多个副本分片
  • 索引中数据分散在Shard上
  • 索引的Mapping定义文档字段的类型
  • 索引的Setting定义不同的数据分布

2.索引模板(Index Template)

介绍

  • 帮助你设定索引的Mappings和Settings
  • 按照一定的规则,自动匹配到新创建索引上
  • 模板仅在一个索引被新创建时,才会产生作用
  • 修改模板不会影响已经创建的索引
  • 你可以设定多个索引模板,这些设置会被“merge”在一起
  • 你可以指定“order”的数值,控制“merging”的过程

工作方式(当索引被创建时)

  • 应用ES默认的settings与mappings
  • 应用order数值低的index Template中的设定
  • 应用高的index Template中的设定之前的设定会被覆盖
  • 用户所指定的settings和mappings,并覆盖之前模板中的设定

请求路径

# 创建模板,template_default 是这个名字的话就是默认的模板
PUT _template/[index-template]
{
  "index_patterns": ["test*"],
  "order": 1,
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 2
  },
  "mappings": {
    "date_detection": false,
    "numeric_detection": true
  }
}
# 查看template信息
GET /_template/<index-template>
GET /_template/tem*

3.索引别名(aliases)

介绍

  • 索引别名是用于引用一个现有索引的辅助名称
  • 查询,插入,修改 文档都可以使用别名

请求格式

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "<index>",
        "alias": "别名名称"
      }
    }
  ]
}

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "<index>",
        "alias": "别名名称",
        "filter": {
          "range": {
            "rating": {
              "gte": 4
            }
          }
        }
      }
    }
  ]
}
PUT /<index>
{
  "mappings": {
    "properties": {
      "<field1>": {
        "type": "字段类型"
      },
      "<field2>": {
        "type": "alias",
        "path": "目标字段的路径(<field1>)" 
      }
    }
  }
}

注意

  • path是指目标字段的路径。请注意,这必须是完整路径,包括任何父对象(例如object1.object2.field)
  • 不支持仅写入字段别名
  • 不支持在插入请求或更新请求中使用别名
  • 不支持多字段
  • 指定查找路径的查询部分不能通过其别名引用字段

4.索引API

获取索引设置

请求路径
GET /[索引名]/_settings

GET /[索引名]/_settings/[设置项setting]
请求参数:setting
  • 可选
  • 字符串
  • 逗号分隔列表或通配符表达式
请求示例
GET /twitter,kimchy/_settings

GET /_all/_settings

GET /log_2013_*/_settings

关闭索引

请求路径
POST /[索引名]/_close
请求参数:索引名
  • 可选
  • 字符串
  • 索引名称的逗号分隔列表或通配符表达式

打开索引

请求路径
POST /[索引名]/_open
请求参数:索引名
  • 可选
  • 字符串
  • 索引名称的逗号分隔列表或通配符表达式

5.创建索引的示例

POST /test
{
    "settings":{
      "index":{
          // 索引默认分词器
          "analysis.analyzer.default.type":"ik_max_word"
      }
      // 自定义分词器
      "analysis":{
          "analyzer":{
              "ik_pinyin":{  // 自定义分词器的名称
                  "tokenizer":"ik_max_word", // 基本分词器
                  "filter":"pinyin_filter" // 自定义的分词器
              }
          },
          "filter":{ // 自定义tokenizer filter
              "pinyin_filter":{ // 过滤器类型
                  "type":"pinyin",  // 这个过滤器的类型
                  "keep_separate_first_letter":false, // 是否分词每个字的首字母
                  "keep_full_pinyin":true, // 是否分词全拼
                  "keep_original":true // 是否保留原始输入
                  "remove_duplicated_term":true // 是否删除重复项
                  "keep_joined_full_pinyin":true,
                  "limit_first_letter_length":16,
                  "none_chinese_pinyin_tokenize":false
              }
          }
      }  
    },
    "mappings":{
        "dynamic":"strict", // 动态映射严格模式
        "properties":{
            "name":{ // 字段名称
                "type":"text", // 字段类型
                "sotre":true, // 是否单独存储
                "index":true, // 是否创建倒排索引
                "analyzer":"ik_max_word", // 创建倒排索引时候的分词器
                "search_analyzer":"ik_pinyin", // 搜索时候的分词器
                "dynamic":true // 动态映射设置
            }
        }
    }

}
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到