Elasticsearch学习笔记之—mapping

创建mapping

复制代码
PUT test_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "name":{
          "type":"text"
        },
        "age": {
          "type": "integer"
        },
        "birth_day": {
          "type": "date", 
          "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        }
      }
    }
  }
}
复制代码

查看mapping

GET /test_index/_mapping

插入数据

PUT test_index/_doc/1
{
  "name":"1A",
  "age":22,
  "birth_day":"2019-12-21"
}

查询

GET /test_index/_search

 

数据类型

    • 字符串 - text

用于全文索引,该类型的字段将通过分词器进行分词,最终用于构建索引

    • 字符串 - keyword

不分词,只能搜索该字段的完整的值,只用于 filtering

    • 数值型

long:有符号64-bit integer:-2^63 ~ 2^63 - 1
integer:有符号32-bit integer,-2^31 ~ 2^31 - 1
short:有符号16-bit integer,-32768 ~ 32767
byte: 有符号8-bit integer,-128 ~ 127
double:64-bit IEEE 754 浮点数
float:32-bit IEEE 754 浮点数
half_float:16-bit IEEE 754 浮点数
scaled_float

    • 布尔 - boolean

值:false, “false”, true, “true”

    • 日期 - date

由于Json没有date类型,所以es通过识别字符串是否符合format定义的格式来判断是否为date类型
format默认为:strict_date_optional_time||epoch_millis format

    • 二进制 - binary

该类型的字段把值当做经过 base64 编码的字符串,默认不存储,且不可搜索

    • 范围类型

范围类型表示值是一个范围,而不是一个具体的值
譬如 age 的类型是 integer_range,那么值可以是 {“gte” : 10, “lte” : 20};搜索 “term” : {“age”: 15} 可以搜索该值;搜索 “range”: {“age”: {“gte”:11, “lte”: 15}} 也可以搜索到
range参数 relation 设置匹配模式
INTERSECTS :默认的匹配模式,只要搜索值与字段值有交集即可匹配到
WITHIN:字段值需要完全包含在搜索值之内,也就是字段值是搜索值的子集才能匹配
CONTAINS:与WITHIN相反,只搜索字段值包含搜索值的文档
integer_range
float_range
long_range
double_range
date_range:64-bit 无符号整数,时间戳(单位:毫秒)
ip_range:IPV4 或 IPV6 格式的字符串

posted @   星星c#  阅读(756)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示