Mapping 设计指南

Mapping 设计指南

Survive by day and develop by night.

talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.

happy for hardess to solve denpendies.

目录

概述

Mapping 设计指南

需求:

最近在使用对应的方法中采用了Mapping 的方法中:ElasticSearch 的 mapping 该如何设计,才能保证检索的高效?

设计思路

实现思路分析

1、properties

mappings、object字段和nested字段包含的子字段就叫做 properties,示例:

java 复制代码
PUT my_index
{
  "mappings": {
    "properties": { 
      "manager": {
        "properties": { 
          "age":  { "type": "integer" },
          "name": { "type": "text"  }
        }
      },
      "employees": {
        "type": "nested",
        "properties": { 
          "age":  { "type": "integer" },
          "name": { "type": "text"  }
        }
      }
    }
  }
}

2.fields

对同一个字段建立不同的索引方式,即multi-field。示例:

java 复制代码
```java
PUT my_index
{
  "mappings": {
    "properties": {
      "name": { 
       # 针对 name 字段,使用 standard 分词器建立索引
        "type": "text",
        "fields": {
       # 针对 name.sub_name 字段,使用 english 分词器建立索引
          "sub_name": { 
            "type":     "text",
            "analyzer": "english"
          }
        }
      }
    }
  }
}
复制代码
2、analyzer
设置text类型字段index时的分词器。如上例中的【"analyzer": "english"】,就表示对 name.sub_name 字段,使用 english 分词器建立索引。
关于analyzer,方才兄在这里补充一个知识点,ElasticSearch如何确定 index 的 analyzer:


```java
PUT my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "whitespace"
      }
    }
  }
}
# 指定字段 title 建立倒排索引时的 analyzer 为 whitespace

3.search_analyzer

爬虫调度器就是可以利用多线程机制,进行调度似的更快的进行网页爬取。

设置 search 时使用的分词器。ElasticSearch 如何确定 search 时的 analyzer:

java 复制代码
GET my_index/_search
{
  "query": {
    "match": {
      "message": {
        "query": "Quick foxes",
        "analyzer": "stop"
      }
    }
  }
}

2)读取 index 的 mapping 字段配置 search_analyzer

java 复制代码
PUT my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "whitespace",
        "search_analyzer": "simple"
      }
    }
  }
}

4.2、format

这个也比较简单,就是对网页元素进行解析,通常利用JSONP,xpath等技术进行网页分析。

java 复制代码
ES的date类型允许我们规定格式,可以使用的格式有3种:
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
epoch_millis(毫秒值)
 
# 规定格式如下:|| 表示或者
 
PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "date": {
          "type":   "date",
          "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        }
      }
    }
  }
}
注意:一旦我们规定了格式,如果新增数据不符合这个格式,ES将会报错mapper_parsing_exception。

1、enabled

设置成 false,仅做存储,不⽀持搜索和聚合分析 (数据保存在 _source 中)。

2、doc_values

参考资料和推荐阅读

参考资料
官方文档
开源社区
博客文章
书籍推荐

  1. https://blog.csdn.net/qq_36095679/article/details/109376980

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~

相关推荐
IT WorryFree几秒前
FortiGate常用资产 OID 清单,配套 Excel 台账模板字段
网络·人工智能·excel
CryptoPP几秒前
多市场行情 API 接入实战:一套接口打通股票/外汇/期货/加密货币 + WebSocket 实时推送
大数据·网络·人工智能·websocket·网络协议·金融·区块链
陈猪的杰咪9 分钟前
【2026最新指南】AI大模型API中转站选型参考:国内稳定接入ChatGPT、Claude、Gemini等主流模型实践分享
运维·网络·人工智能·chatgpt·架构
爱讲故事的11 分钟前
计算机网络第四章复习:网络层 Data Plane 数据平面
网络·计算机网络·平面
云安全助手13 分钟前
国内调用GPT的现实困境与聚合平台解决方案探析
网络·人工智能·网络安全·ai大模型
xlq2232214 分钟前
67.子网划分运营商
网络·智能路由器
小灰灰搞电子15 分钟前
C++ boost::asio 详解:网络编程领域的“瑞士军刀“
网络·c++·boost
梁辰兴16 分钟前
计算机网络基础:计算机网络面临的安全性威胁
网络·计算机网络·计算机·计算机网络基础·梁辰兴
折哥的程序人生 · 物流技术专研8 小时前
Java面试85题图解版 · 特别篇:2026后端高频面试题复盘(算法底层逻辑+高并发架构设计全解析,附Java实战代码)
java·网络·数据库·算法·面试
专注VB编程开发20年9 小时前
c#Modbus上位机开发-一次读10个地址和100个地址速度一样
网络·网络协议·tcp/ip