Elasticsearch 映射参数详解 fields

 更新时间:2021年07月12日 10:40:59   作者:小黑王HK  
这篇文章主要介绍了fields Elasticsearch 映射参数fields,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Elasticsearch 映射参数 fields

fields

处于不同的目的,通过不同的方法索引相同的字段通常非常有用。这也是多字段的目的。例如,一个字符串字段可以映射为text字段用于全文本搜索,也可以映射为keyword字段用于排序或聚合。

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "city": {
          "type": "text",
          "fields": {
            "raw": { 
              "type":  "keyword"
            }
          }
        }
      }
    }
  }
}

note:city.raw字段是city字段的keyword版本。

GET my_index/_search
{
  "query": {
    "match": {
      "city": "york" 
    }
  },
  "sort": {
    "city.raw": "asc" 
  },
  "aggs": {
    "Cities": {
      "terms": {
        "field": "city.raw" 
      }
    }
  }
}

note:city字段用于全文本搜索。

note:city.raw用于排序与聚合。

多字段不能修改原始_source字段。

对于相同索引中具有相同名称的字段,fields设置允许有不同的设置。可以使用PUT映射API将新的多字段添加到已存在的字段中。

带有多个分析的多字段

多字段的另一个应用场景是使用不同的方法分析相同的字段以求获得更好的相关性。

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "text": { 
          "type": "text",
          "fields": {
            "english": { 
              "type":     "text",
              "analyzer": "english"
            }
          }
        }
      }
    }
  }
}

note:text.field字段使用english分析器。

elasticsearch注解实现fields

mapping效果:

"label": {
            "type": "keyword",
            "fields": {
              "IKS": {
                "type": "text",
                "analyzer": "ikIndexAnalyzer"
              }
            }
          }
@Column(name = "标签")
    @MultiField(
            mainField = @Field(type = FieldType.Keyword),
            otherFields = {
                    @InnerField(suffix = "IKS", type = FieldType.Text, analyzer = "ikIndexAnalyzer")
            }
    )
    protected String label;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Java 中泛型的实现原理

    详解Java 中泛型的实现原理

    这篇文章主要介绍了详解Java 中泛型的实现原理,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-03-03
  • Java复制文件常用的三种方法

    Java复制文件常用的三种方法

    今天小编就为大家分享一篇关于Java复制文件常用的三种方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • MyBatis如何实现流式查询的示例代码

    MyBatis如何实现流式查询的示例代码

    这篇文章主要介绍了MyBatis 如何实现流式查询的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 说明Java的传递与回调机制的代码示例分享

    说明Java的传递与回调机制的代码示例分享

    这篇文章主要介绍了说明Java的传递与回调机制的代码示例分享,传递与回调机制是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • 关于SpringMVC的异常处理机制详细解读

    关于SpringMVC的异常处理机制详细解读

    这篇文章主要介绍了关于SpringMVC的异常处理机制详细解读,SpringMVC是目前主流的Web MVC框架之一,本文将分析SpringMVC的异常处理内容,需要的朋友可以参考下
    2023-05-05
  • feign调用返回object类型转换方式

    feign调用返回object类型转换方式

    这篇文章主要介绍了feign调用返回object类型转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java 实现LZ78压缩算法的示例代码

    Java 实现LZ78压缩算法的示例代码

    这篇文章主要介绍了Java 实现LZ78压缩算法的示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • SpringMVC按Ctrl上传多个文件的方法

    SpringMVC按Ctrl上传多个文件的方法

    这篇文章主要为大家详细介绍了SpringMVC按Ctrl上传多个文件的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • 宁可用Lombok也不把成员设置为public原理解析

    宁可用Lombok也不把成员设置为public原理解析

    这篇文章主要为大家介绍了宁可用Lombok也不把成员设置为public原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Java数据长度获取方式对比之length属性、length()和size()方法详解

    Java数据长度获取方式对比之length属性、length()和size()方法详解

    在Java编程语言中length、length()和size()是三个常见的用来获取不同数据类型对象长度或大小的方法,但它们各自适用于不同的上下文,这篇文章主要给大家介绍了关于Java数据长度获取方式对比之length属性、length()和size()方法详解
    2024-07-07

最新评论