Elasticsearch中ElasticsearchRepository的searchSimilar使用的坑

这篇具有很好参考价值的文章主要介绍了Elasticsearch中ElasticsearchRepository的searchSimilar使用的坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

结论

先说结论:ElasticsearchRepository.searchSimilar只能使用ID字段进行查询

分析过程

elasticsearch 4.x提供了ElasticsearchRepository<T, ID>,方便开发人员编写CURD操作。其中提供了一个抽象方法searchSimilar(T,String[],Pageable)。从命名看可以进行模糊查询,但是具体实现中是有问题的。

spring-data-elasticsearch版本号:4.1.3

方法入参中的T,需要提供一个ID字段,若不提供ID字段则会报错“No document id defined for MoreLikeThisQuery“。一开始还在想为什么一定要指定ID字段,后续跟踪发现,searchSimilar默认只能使用ID进行匹配查询。

跟踪方法调用至“rg.springframework.data.elasticsearch.core.AbstractElasticsearchTemplate#search(org.springframework.data.elasticsearch.core.query.MoreLikeThisQuery, java.lang.Class, org.springframework.data.elasticsearch.core.mapping.IndexCoordinates)”这个方法,查看生成的查询语句如下:

{
  "more_like_this" : {
    "fields" : [
      "info_content_"
    ],
    "like" : [
      {
        "_index" : "data_analysis_",
        "_id" : "x1YdKHoBhbMQeLLaXKrn"
      }
    ],
    "max_query_terms" : 25,
    "min_term_freq" : 2,
    "min_doc_freq" : 5,
    "max_doc_freq" : 2147483647,
    "min_word_length" : 0,
    "max_word_length" : 0,
    "minimum_should_match" : "30%",
    "boost_terms" : 0.0,
    "include" : false,
    "fail_on_unsupported_field" : true,
    "boost" : 1.0
  }
}

从生产的查询条件可以看到,like_texts被like替换了,并且在like中指定了模糊查询的条件是ID字段。

为什么没有like_texts?

继续跟踪代码,发现在“org.springframework.data.elasticsearch.core.RequestFactory#moreLikeThisQueryBuilder”中构建查询语句的时候,like_texts直接赋值了’null‘。
Elasticsearch中ElasticsearchRepository的searchSimilar使用的坑Elasticsearch中ElasticsearchRepository的searchSimilar使用的坑文章来源地址https://www.toymoban.com/news/detail-509560.html

到了这里,关于Elasticsearch中ElasticsearchRepository的searchSimilar使用的坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Elasticsearch】windows安装elasticsearch教程及遇到的坑

    一、安装参考 1、安装参考:ES的安装使用(windows版)  elasticsearch的下载地址:https://www.elastic.co/cn/downloads/elasticsearch  ik分词器的下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases  kibana可视化工具下载地址:https://www.elastic.co/cn/downloads/kibana  安装es之前确保系统已安装

    2024年04月17日
    浏览(42)
  • spark对接elasticsearch遇到的坑

    环境 spark3.0 scala2.12 es7.3 pom文件: Provider org.apache.hadoop.hdfs.DistributedFileSystem could not be instantiated 问题:出现了和hadoop相关的问题 解决: 引入hadoop-client包 ERROR NetworkClient: Node [xxx] failed (java.net.SocketException: Connection reset); selected next node [xxx] 问题:连接不上es 解决: 设置两个参数

    2024年02月15日
    浏览(39)
  • 记一次docker安装elasticsearch遇到的坑

    标题docker-compose安装elasticsearch7.6.2 解压elasticsearch7.6.2.zip到elasticsearch的plugins: 运行后报错信息: 既然报这个错,就查看这个文件 解决方法:在plugins中新建文件件,名字为analysis-ik,将所有plugins下的elasticsearch文件移动到analysis-ik下面,再次运行docker restart elasticsearch 成功!

    2024年02月12日
    浏览(44)
  • ES Elasticsearch日期范围查询和查不出的坑

    如果字段为字符串类型,需要在字段后面加 .keyword 不加会出现查不出的问题。 查询全部,有大于2022-01-01的数据 按日期范围查询却没有查出来 字段后面加“.keyword”即可,分词问题

    2024年02月11日
    浏览(41)
  • 解决Elasticsearch集群开启账户密码安全配置自相矛盾的坑

    最近在配置elasticsearch生产可用的集群环境时,集群搭建完成后,为了安全,启用es集群的安全配置,根据官方文档Set up minimal security for Elasticsearch这一节来配置集群账户密码,然后就出现了开启安全模式后,./bin/elasticsearch-setup-passwords auto ,./bin/elasticsearch-setup-passwords interact

    2023年04月08日
    浏览(40)
  • elasticsearch8和kibana部署以及与springboot整合遇到的坑

    我本来使用的是最新版本的es 8.6.2。但是由于ik分词器只更新到8.6.1,所以就更改为部署8.6.1。在过程中遇到一些问题,这里做一个总结 环境:windows10 elasticsearch版本:8.6.1 一、修改es 用户密码的方式 二、kibana 使用用户名和密码登录 修改kibana.yml 文件 启动kibana一直闪退 解决方

    2024年02月02日
    浏览(41)
  • ElasticSearch学习01——Windows10环境下ES安装经验与踩到的坑

    由于对ES基本概念和历史演进在网上随处可查,所以本文在此不做赘述.随意本文直接讲述如何安装使用ES ​ ElasticSearch是基于lucence开发的,也就是运行需要java jdk支持。所以要先安装JAVA环境。由于ElasticSearch 5.x 往后依赖于JDK 1.8的,所以最好安装JDK1.8及以上版本.具体安装方法可

    2024年02月12日
    浏览(37)
  • Spring Boot集成ElasticsearchRepository

    在上文springboot操作elasticsearch(简易版)中,我们使用了elasticsearchRestTemplate操作索引及数据,本文主要是介绍elasic媲美数据库连接框架hibernate的数仓ElasticsearchRepository 在本文中,我们将介绍如何使用Spring Boot集成ElasticsearchRepository,并对ElasticsearchRepository类进行深度剖析。首先,

    2024年02月16日
    浏览(35)
  • ES-1:Java的 ElasticsearchTemplate Or ElasticsearchRepository基础常用查询写法

    目录 安装elasticsearch maven 数据来源: 网易数据 mysql的相关语法 Java代码 = in like between  and is null is not null order by max min avg sum (发现es新语法 stats 直接统计聚合)

    2024年02月15日
    浏览(47)
  • eventBus使用遇到的坑

    **问题:**通过eventBus传递的参数,在子组件的methods中无法通过this.使用。 **思路:**考虑组件方法的执行顺序(vue生命周期执行顺序) **解决办法:**在传递参数的组件外 this.$nextTick 创建eventBus.js文件 在需要传递消息的兄弟组件引入该js文件 传递消息 bus.$emit(“test”,param1,pa

    2024年02月14日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包