Spring Data ElasticSearch analyzer 定义 @Filed失效 @Mapping失效 创建索引 无效 解决办法 ElasticsearchRestTemplate

2023-11-07

ES版本 7.x

首先上失效原因

  • SpringDataElasticsearch版本变动频繁,很多网上的代码失效,有很多方法标记为过时
  • ElasticsearchRestTemplate不读@Filed注解,所以你在@Field里面写再多代码也没用,以下代码为错误示例
    @Field(analyzer = "ik_smart", type = FieldType.Text)
    private String commentText;
  • ElasticsearchRestTemplate在创建索引的时候不读@Mapping,也就是需要两步才能创建完整的索引 1、创建索引  2、更新字段mapping
  • ElasticsearchRestTemplate 创建的索引名只读@Document注解,所以必须包含@Document注解,以下代码为错误示例

@Mapping(mappingPath="mapper/document.json")
@Data
public class MyDocument {
    @Id
    private String id;
    private String title;
}



//创建目标索引代码 
restTemplate.indexOps(VideoDocument.class).create();

  •  Mapping.json内,直接说明属性即可,不需要mapping包裹,以下代码为错误示例
{
  "mapping":{
      "properties": {
           "id": {
              "type": "text"
            },
            "title": {
              "type": "text",
              "analyzer": "ik_smart",
              "search_analyzer": "whitespace"
            }
      }
  }
}

原因是源码里,直接将此json作为更新索引请求体,所以es语法怎么定义就怎么写,不是spring 定义的格式

正确写法:

1、需要@Document注解
2、添加Mapping注解,自己创建一个json文件用来定义字段类型

3、创建索引后需要putMapping,更新字段属性,此时才会读Mapping里面定义的json

4、json文件内为 es更新索引的请求体,直接以properties开头

//Document类定义
@Document(indexName = "video")
@Mapping(mappingPath="mapper/myDocument.json")
public class MyDocument{

    @Id
    private String id;

    private String title;
}


//创建索引 可以指定在postconstruct内
if (!restTemplate.indexOps(MyDocument.class).exists()) {
  restTemplate.indexOps(MyDocument.class).create();
  restTemplate.indexOps(MyDocument.class).putMapping();
}
{
    "properties": {
         "id": {
            "type": "text"
          },
          "title": {
              "type": "text",
              "analyzer": "ik_smart",
              "search_analyzer": "whitespace"
          }
    }
  
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Data ElasticSearch analyzer 定义 @Filed失效 @Mapping失效 创建索引 无效 解决办法 ElasticsearchRestTemplate 的相关文章

随机推荐

  • synchronized原理之前置知识

    一 Monitor概述 一 Java 对象头以 32 位虚拟机为例 一 普通对象 Object Header 64 bits Mark Word 32 bits Klass Word 32 bits 这个可以找到对象 二 数组对象
  • 构造一个简单的操作系统内核,详解进程切换细节

    1 基本功能介绍 如题 本文将介绍如何构造一个简单的操作系统内核 基于内核版本3 9 4 它有以下功能 1 进程的管理 2 进程的初始化 3 进程基于时间片的调度 2 实操步骤 1 安装qemu 以ubuntu为例 sudo apt get
  • jsp记住密码--Cookie

    jsp记住账号密码 本文介绍使用Cookie来实现记住账号密码操作 什么是Cookie Cookie是客户端访问服务器时 服务器在客户端硬盘上存放的信息 Cookie是服务器通知客户端保存键值对的一种技术 Cookie的用途 Cookie可
  • 百度智能云度能推出全新碳盘查服务,助力企业和园区摸清家底实现精细化管理

    今年1月 国务院发布 十四五 节能减排综合工作方案的通知 方案提出到2025年 全国单位国内生产总值能源消耗比2020年下降13 5 能源消费总量得到合理控制 百度也积极履行科技企业减碳责任 于2021年正式公布到2030年实现集团运营层面
  • 测开上手codewhisperer初体验

    AWS新出了一个插件 codewhisperer 这个名字一听还挺有意思 wispiser意为在耳边轻声细语的人 官方解释是一个强大的机器学习AI代码生成器 可以给你一些代码的建议 Amazon CodeWhisperer is a gen
  • 【CV大模型SAM(Segment-Anything)】如何一键分割图片中所有对象?并对不同分割对象进行保存?

    之前的文章 CV大模型SAM Segment Anything 真是太强大了 分割一切的SAM大模型使用方法 可通过不同的提示得到想要的分割目标 中详细介绍了大模型SAM Segment Anything 根据不同的提示方式得到不同的目标分
  • [转]QNX_IDE使用cin输入变量不能编译通过的解决方法

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 在使用QNX
  • 去掉有定位的left值

    left initial 一开始就是初始 默认值 的意思 就可以解决定位的left啦 转载于 https www cnblogs com renxiao1218 p 11611101 html
  • Flink运行时之批处理程序生成计划

    批处理程序生成计划 DataSet API所编写的批处理程序跟DataStream API所编写的流处理程序在生成作业图 JobGraph 之前的实现差别很大 流处理程序是生成流图 StreamGraph 而批处理程序是生成计划 Plan
  • Red Hat Linux 命令Crontab的使用方法

    Red Hat Linux 命令Crontab的使用方法1 cron是一个linux下的定时执行工具 可以在无需人工干预的情况下运行作业 由于Cron 是Linux的内置服务 但它不自动起来 可以用以下的方法启动 关闭这个服务 sbin s
  • Pytorch推出fx,量化起飞

    本文首发于公众号 没事来逛逛 Pytorch1 8 发布后 官方推出一个 torch fx 的工具包 可以动态地对 forward 流程进行跟踪 并构建出模型的图结构 这个新特性能带来什么功能呢 别的不说 就模型量化这一块 炼丹师们有福了
  • Linux下怎么让挂起的(suspend or stopped)进程恢复执行(resume)

    今天在linux安装app的时候 安装的进度长时间停止不前 于是我使用Ctrl Z 打断了安装 然后又运行了一遍安装的命令 这个时候 提示了警告 说这个安装已经安排了但是现在的状态是suspend的 一时间 我想要通过PID把这个进程差掉
  • Windows下 的MySQL安装、配置以及中文字符集编码设置

    一 MySQL安装 第一步 双击程序包 会弹出如下图 第二步 点击Next之后 出现如下图 第三步 选完自己安装的版本 点击Next 第四步 点击Next之后 出现如下图 第五步 点击两次Next之后 显示如下图 根据自己需求改动 一般情况
  • 软件设计师笔记公告(备考攻略)

    软件设计师笔记公告 上午题 下午题 先上成绩 今天软考成绩出来了 很高兴我一次拿下 非常感谢b站up主zst 2001 zst 2001主页链接 我一次性通过很大程度上是因为zst 2001的帮助 于此同时 你们能看到我这个笔记也要感谢up
  • Python 标准库之 xml.etree.ElementTree 简介

    文章来源 https www cnblogs com ifantastic archive 2013 04 12 3017110 html 简介 Element类型是一种灵活的容器对象 用于在内存中存储结构化数据 注意 xml etree
  • pico park无法连接至远程服务器,pico park怎么联机玩?pico park怎么邀请朋友一起玩?[多图]...

    pico park是最近这几天比较火爆的一款游戏了 想必与很多的玩家们 都想与自己的好友一起联机作战 但是又不知道该怎么邀请朋友一起玩 各位新手玩家们 不用太着急 小编这就为大家带来了一套与朋友一起联机玩的教程 只要轻松两步 便可以解决大家
  • C# 命令行参数分割

    CommandLineToArgvW 函数 DllImport shell32 dll SetLastError true private static extern IntPtr CommandLineToArgvW MarshalAs
  • OpenGL ES之十一——绘制3D图形

    概述 这是一个系列的Android平台下OpenGl ES介绍 从最基本的使用最终到VR图的展示的实现 属于基础篇 后面针对VR视频会再有几篇文章 属于进阶篇 OpenGL ES之一 概念扫盲 OpenGL ES之二 Android中的Op
  • Tomcat执行startup.bat出现闪退的可能原因

    问题描述 Tomcat再解压之后 点击startup bat出现闪退 以下是我在网上搜索的解决方案 1 端口被占用 到tomcat安装目录的logs文件夹下查看日志文件 log结尾 看是不是有 严重 StandardServer await
  • Spring Data ElasticSearch analyzer 定义 @Filed失效 @Mapping失效 创建索引 无效 解决办法 ElasticsearchRestTemplate

    ES版本 7 x 首先上失效原因 SpringDataElasticsearch版本变动频繁 很多网上的代码失效 有很多方法标记为过时 ElasticsearchRestTemplate不读 Filed注解 所以你在 Field里面写再多代