首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Elasticsearch HashMap[String,String]映射值不能为not_analyzed

Spring Elasticsearch是一个基于Spring框架的Elasticsearch客户端,用于在Java应用程序中与Elasticsearch进行交互。Elasticsearch是一个开源的分布式搜索和分析引擎,可以用于快速、可扩展的全文搜索、结构化搜索、分析和可视化数据。

在Elasticsearch中,数据存储在索引中,每个索引由一个或多个分片组成,每个分片又包含多个文档。文档是可以被索引的最小单位,它们以JSON格式表示。

HashMapString, String是Java中的一种数据结构,它是一个键值对的集合,其中键和值都是字符串类型。在Spring Elasticsearch中,当使用HashMapString, String作为映射值时,会默认将其作为一个对象进行索引,而不会对其进行分词和分析。

"not_analyzed"是Elasticsearch中的一个分析器,它将文本作为一个整体进行索引,不会对其进行分词和分析。因此,当使用HashMapString, String作为映射值时,如果希望对其进行全文搜索或分析,需要将其映射为"analyzed"类型。

为了解决这个问题,可以使用Elasticsearch的映射(mapping)功能来指定字段的类型和分析器。在Spring Elasticsearch中,可以通过创建一个IndexOperations对象,然后使用其方法来定义映射。

以下是一个示例代码,演示如何将HashMapString, String映射为"analyzed"类型:

代码语言:java
复制
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.IndexOperations;
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
import org.springframework.data.elasticsearch.core.mapping.IndexMapping;

// 获取ElasticsearchOperations对象
ElasticsearchOperations elasticsearchOperations = ...;

// 获取IndexOperations对象
IndexOperations indexOperations = elasticsearchOperations.indexOps(IndexCoordinates.of("your_index_name"));

// 创建IndexMapping对象
IndexMapping indexMapping = indexOperations.createMapping();

// 定义字段映射
indexMapping.setFieldMapping(
    indexMapping.createTextField("your_field_name")
        .analyzer("standard") // 设置分析器为"standard"
);

// 更新映射
indexOperations.putMapping(indexMapping);

在上述示例中,"your_index_name"是你的索引名称,"your_field_name"是你的字段名称。通过调用analyzer("standard")方法,将字段映射为"analyzed"类型,并使用"standard"分析器进行分析。

推荐的腾讯云相关产品:腾讯云Elasticsearch Service(https://cloud.tencent.com/product/es)是腾讯云提供的托管式Elasticsearch服务,可以帮助用户快速搭建、部署和管理Elasticsearch集群,提供高可用、高性能的全文搜索和分析能力。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ElasticSearch权威指南学习(映射和分析)

全文文本(Full text) Elasticsearch中的数据可以大致分为两种类型:确切 及 全文文本。 确切是确定的。确切"Foo"和"foo"就并不相同。...映射 为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成全文本(Full-text)或精确的字符串Elasticsearch需要知道每个字段里面都包含了什么类型。..., valid date: "2014-09-15" "date" String: "foo bar" "string" 查看映射 我们可以使用_mapping后缀来查看Elasticsearch中的映射...not_analyzed 索引这个字段,使之可以被搜索,但是索引内容和指定一样。不分析此字段。 no 索引这个字段。这个字段不能为搜索到。...如果我们想映射字段为确切,我们需要设置它为not_analyzed: { "tag": { "type": "string", "index":

1.1K10
  • ElasticSearch Mapping映射

    概述 为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成全文本(Full-text)或精确(Exact-value)的字符串Elasticsearch需要知道每个字段里面都包含什么数据类型...它包含三种方式: 说明 analyzed 首先分析这个字符串,然后索引。换言之,以全文形式索引此字段。 not_analyzed 索引这个字段,使之可以被索引,但是索引内容和指定一样。...no 索引这个字段。这个字段不能被搜索到。 对于 string 类型字段,index默认为 analyzed。...如果我们想把字段映射为确切,我们需要设置为 not_analyzed: { "tag": { "type": "string", "index":..."not_analyzed" } } 其他简单类型(long、double、date等等)也接受index参数,但相应的只能是no和not_analyzed,它们的不能是analyzed。

    1.1K40

    ES系列六、ES字段类型及ES内置analyzer分析

    ElasticSearch字符串将默认被同时映射成text和keyword类型,将会自动创建下面的动态映射(dynamic mappings): { "foo": { "type...重要的参数: index分析 not_analyzed(默认) ,设置为该可以保证该字段能通过检索查询到 no store存储 true 独立存储 false(默认)不存储,从_source中解析 format...常用参数: index分析 not_analyzed(默认) ,设置为该可以保证该字段能通过检索查询到 no store存储 true 独立存储 false(默认)不存储,从_source中解析...False: 表示该的有:false, "false", "off", "no", "0", "" (empty string), 0, 0.0 True: 所有非False的都是true 重要的参数...: index分析 not_analyzed(默认) ,设置为该可以保证该字段能通过检索查询到 no store存储 true 独立存储 false(默认)不存储,从_source中解析 三、内置分词器

    2.4K21

    使用Logstash创建ES映射模版并进行数据默认的动态映射规则

    本文配置为 ELK 即(Elasticsearch、Logstash、Kibana)5.5.1。...Elasticsearch 能够自动检测字段的类型并进行映射,例如引号内的字段映射String,不带引号的映射为数字,日期格式的映射为日期等等,这个机制方便了我们快速上手 ELK,但是后期我们经常需要对一些特定的字段进行定制...,之前本人有一篇文章进行这方面的尝试Logstash中如何处理到ElasticSearch的数据映射,但对于默认映射规则没有介绍,本文就来探讨一些默认的动态映射规则。..."type" : "string", "index" : "not_analyzed", "omit_norms" : true, "doc_values": true,..."fields" : { "raw" : {"type": "string", "index" : "not_analyzed", "ignore_above" : 256

    2.4K20

    Elasticsearch入门必备——ES中的字段类型以及常用属性

    如果自动映射无法满足需求,就需要使用者自己来设置映射类型,因此,就需要使用者了解ES中的类型。 下面就步入正题吧!...官方文档参考 重要的参数: index分析 not_analyzed(默认) ,设置为该可以保证该字段能通过检索查询到 no store存储 true 独立存储 false(默认)不存储,从_source...重要的参数: index分析 not_analyzed(默认) ,设置为该可以保证该字段能通过检索查询到 no store存储 true 独立存储 false(默认)不存储,从_source中解析 format...参考官方文档 False: 表示该的有:false, "false", "off", "no", "0", "" (empty string), 0, 0.0 True: 所有非False的都是true...重要的参数: index分析 not_analyzed(默认) ,设置为该可以保证该字段能通过检索查询到 no store存储 true 独立存储 false(默认)不存储,从_source中解析

    7.7K80

    ES的映射和分析

    精确和全文 1.ES的数据可以分为精确和全文 2.精确比如date类型或者long类型,全文指string类型(匹配) 分析过程: 1.文本分成适合倒排索引的独立的词条 2.将词条标准格式化为可搜索...当你查询一个 精确 域时,不会分析查询字符串, 而是搜索你指定的精确 自定义域映射: 1.全文字符串域和精确字符串域区别 2.使用特定语言分析器 3.优化域适应部分匹配 4.自定义数据格式...备注:可以增加域映射,但是不能修改域映射 自定义域映射-index属性: 1.string类型会被认为包含全文,映射两个重要属性是index和analyzer index只能是analyzed(...默认,分析字符串然后索引)、not_analyzed(不分析只索引,精确匹配)、no(索引) 2.其他类型(long,date,double,float等)的index参数只有not_analyzed.../en/elasticsearch/reference/current/analysis-analyzers.html 说明:我们也可以使用自定义的一些分析器 更多域类型 1.多值域:数组 备注:

    1.5K120

    浅析 ElasticSearch Doc Values 和倒排索引

    为什么要有 Doc Values 我们都知道 ElasticSearch之所以搜索这么快速,归功于他的 倒排索引的设计,然而它也不是万能的,倒排索引的检索性能是非常快的,但是在字段排序时却不是理想的结构...倒排索引将词项映射到包含它们的文档, Docvalues 将文档映射到它们包含的词项: Doc Terms ------------------------------------------...它会按依次检测以下压缩模式: 如果所有的数值各不相同(或缺失),设置一个标记并记录这些 如果这些小于 256,将使用一个简单的编码表 如果这些大于 256,检测是否存在一个最大公约数 如果没有存在最大公约数...,从最小的数值开始,统一计算偏移量进行编码 当然如果存储 String类型,其一样可以通过顺序表对 String类型进行数字编码,然后再把数字类型构建 DocValues。...也就是说所有的数字、地理坐标、日期、IP 和不分析( not_analyzed)字符类型都会默认开启。

    3K20

    PHP Elasticsearch的基本使用方法

    主分片数                 'number_of_replicas'=> 1 //主分片的副本数             ],             'mappings'=> [  //映射...',//类型 string、integer、float、double、boolean、date                             'index'=> 'analyzed',//索引是否精确...  analyzed not_analyzed                         ],                         'age'=> [ //字段2                             ...',                             'index'=> 'not_analyzed',                         ],                     ...其中 _default_是默认配置,其他配置的缺省都与_default_的相同。

    1.6K10

    Elasticsearch-精确查找

    它接受一个字段名以及我们希望查找的数值: { "term" : { "price" : 20 } } 通常当查找一个精确的时候,我们希望对查询进行评分计算。...显然这种对 ID 码或其他任何精确的处理方式并不是我们想要的。 为了避免这种问题,我们需要告诉 Elasticsearch 该字段具有精确,要将其设置成 not_analyzed 无需分析的。...我们可以在 自定义字段映射 中查看它的用法。为了修正搜索结果,我们需要首先删除旧索引(因为它的映射不再正确)然后创建一个能正确映射的新索引: DELETE /my_store ?...", "index" : "not_analyzed" ?...在索引被删除后,我们可以创建新的索引并为其指定自定义映射。 这里我们告诉 Elasticsearch ,我们不想对 productID 做任何分析。

    2.8K100
    领券