美文网首页
elasticSearch7.x—mapping中的fields

elasticSearch7.x—mapping中的fields

作者: 小胖学编程 | 来源:发表于2021-05-20 11:56 被阅读0次

    elasticSearch允许一个字段有两种不同的类型,例如一个字段即可以为text类型,也可以为keyword类型。

    1.方式一:mapping的fields属性

    未创建索引时,直接插入文档,es会自动生成mapping关系。

    POST test_fields/_doc
    {
      "name":"li bai",
      "id":202112120202
    }
    
    image.png

    即name字段即是text类型,name.keyword是keyword属性。我们可以直接去搜索name.keyword。


    image.png

    扩展:es的script脚本,对于text字段,官网推荐我们使用doc['first_name.keyword']获取值,其本质就是因为mapping中存在fields字段。

    # id即是long类型,也是date类型
    PUT test_fields
    {
      "mappings": {
        "properties": {
          "name":{
            "type":"text",
            "fields": {
              "rz":{
                "type":"keyword"
              }
            }
          },
          "id":{
            "type": "long",
            "fields": {
              "time":{
                "type":"date",
                "format":"yyyyMMddhhmmss"
              }
            }
          }
        }
      }
    }
    
    
    POST test_fields/_doc
    {
      "name":"li bai",
      "id":20211012020200
    }
    
    
    GET test_fields/_search
    

    使用date类型进行搜索时:

    使用date类型进行搜索时.png

    当然,搜索的_source字段只会存在id和name两个属性。

    image.png

    2. 方式二:copy_to配置

    当然,创建mapping的时候,copy_to是将多个字段的值,合并到一个字段中,便于搜索。但是也可以实现一个字段存在多个类型的需求。

    创建索引:

    PUT test_fields
    {
      "mappings": {
        "properties": {
          "name":{
            "type":"text",
            "fields": {
              "rz":{
                "type":"keyword"
              }
            }
          },
          "id":{
            "type": "long",
            "copy_to": "r_time"
          },
          "r_time":{
            "type":"date",
            "format": "yyyyMMddhhmmss"
          }
       }
      }
    }
    

    填充数据:

    POST test_fields/_doc
    {
      "name":"li bai",
      "id":20211012020200
    }
    
    image.png

    在_source中也不会体现,但是可以进行搜索。

    搜索.png

    可以看到,在插入数据的时候并未插入r_time字段。它是将id字段(long类型)填充到了r_time字段中,并转化为了date类型。

    相关文章

      网友评论

          本文标题:elasticSearch7.x—mapping中的fields

          本文链接:https://www.haomeiwen.com/subject/mjevjltx.html