Spring 中的 ElasticSearch 与 @Query

2023-12-26

我已经使用 ElasticSearch 的 _plugin/head 接口成功创建了一个查询。该查询旨在返回特定位置的特定设备的最新时间戳。该查询如下所示:

{  
   "query":{  
      "bool":{  
         "must":[  
            {  
               "term":{  
                  "deviceevent.location.id":"1"
               }
            },
            {  
               "term":{  
                  "deviceevent.deviceId":"AHE1LDD01"
               }
            }
         ]
      }
   },
   "from":0,
   "size":1,
   "sort":{  
      "timestamp":{  
         "order":"desc"
      }
   }
}

上面的查询按预期工作。 现在使用 Spring-Boot 和 Spring-Data-ElasticSearch,我定义了自己的ElasticSearchRepository如下所示:

package com.repository.elasticsearch;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

import com.domain.DeviceEvent;

public interface DeviceEventRepository extends ElasticsearchRepository<DeviceEvent, String>
{
    @Query("{\"bool\":{\"must\":[{\"term\":{\"deviceevent.location.id\": \"?0\"}},{\"term\":{\"deviceevent.deviceId\": \"?1\"}}]}},\"from\": 0,\"size\": 1,\"sort\":{\"timestamp\":{\"order\":\"desc\"}}")
    DeviceEvent findLatestCheckInAtLocation(Long locationId, String deviceId);
}

上面的代码被破坏主要是因为我希望它返回一个DeviceEvent,但它实际上返回了 count = 10(默认页面大小)的设备事件。结果似乎也没有按时间戳降序排列。就好像size and order查询的部分内容未被获取。

我在这里做错了什么?


而不是在查询注释中控制结果大小。

使用Pageable接口,以下摘自文档。

public interface BookRepository extends ElasticsearchRepository<Book, String> {
    @Query("{"bool" : {"must" : {"field" : {"name" : "?0"}}}}")
    Page<Book> findByName(String name,Pageable pageable);
}

这将使您能够:

findByName("foo-name", new PageRequest(0,1));

如果你还想排序:

findByName("foo-name", new PageRequest(0,1, new Sort(new Sort.Order(Sort.Direction.ASC,"name")))).getContent().get(0);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 中的 ElasticSearch 与 @Query 的相关文章

随机推荐

  • Java包循环检测:如何找到涉及的具体类? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您推荐什么工具来检测Java包循环依赖 知道目标是明确列出检测到的 跨包循环 中涉及的特定类 我知道关于
  • ASP.NET 中的基本表单身份验证有多安全?

    想象一下 您有一个只有 2 个页面的简单网站 login aspx 和 Secret aspx 仅使用 ASP net 表单身份验证和 login aspx 上的 ASP net 登录服务器控件来保护您的站点 详情如下所示 该站点配置为使用
  • 如何在mySQL中动态选择列名

    我想选择列名 但我事先不知道表结构 并且它可能会改变 所以我不能只用列名对 select 语句进行硬编码 我也不想选择每一列 有没有简单的方法可以做到这一点 我的想法是这两个查询的某种组合 但我的 SQL 不是那么好 SHOW COLUMN
  • 是什么导致我的参数超出范围异常? [复制]

    这个问题在这里已经有答案了 我试图测试我的列表是否正在从数据库收集数据 但是当我尝试获取消息框以从列表中打印邮政编码时 它给了我例外 System ArgumentOutOfRangeException 索引超出范围 必须为非负数且小于集合
  • Android 图像缓存 - 如何?

    我想以前已经问过很多次了 但仍然有些事情我不太明白 我尝试了两种不同的方法 将所有图像保留在内存中 当开始超过一定限制时 开始删除它们 让 Android 使用 SoftReferences 解决这个问题 2 有时 我分配它们时 它只是清理
  • 如何处理文件路径中的 ~

    我正在编写一个简单的命令行 Java 实用程序 我希望用户能够使用以下命令传递相对于其主目录的文件路径 操作员 所以像 Documents 我的问题是有没有办法让Java自动解析这种类型的路径 或者我是否需要扫描文件路径 操作员 看来这种类
  • 为什么 Perl 函数“map”给出错误“Map 参数不足”

    这是我不明白的事情 该脚本工作正常 注意映射函数中的串联 usr bin perl use strict use warnings use Data Dumper my aa map a gt 1 1 3 print Dumper aa E
  • 使用 Jinja2 在 html 文件中嵌入 png 图像

    我正在使用 Jinja2 将 html 报告创建为单个 html 文件 我想在 html 文件中包含公司徽标 而不是链接到它 这样 即使阅读报告的人处于离线状态 也会显示徽标 使用 Jinja2 可以自动完成此操作吗 如果不是 我如何手动在
  • 我可以阻止手机在网页上休眠吗

    在应用程序中我可以使用http developer android com reference android os PowerManager WakeLock html http developer android com referen
  • 虚函数表偏移量

    我想问一下 类的虚函数表的偏移量取决于什么 我的意思是 从我读到的内容来看 它至少取决于编译器 但它是否因类而异 编辑 通过偏移我的意思是表相对于所有者对象的地址的位置 编辑 示例代码 void vtable void char objec
  • 为什么在使用 MSpec/Moq 测试此异步方法时会收到 NullReferenceException?

    我想测试异步方法是否返回正确的类型 此方法使用依赖类中的另一个异步方法 依赖类实现此接口 Task
  • 在 dotnet core SDK 版本之间切换

    我最近安装了 VS 2017 RC 然后我的 dotnet 版本自动指向1 0 0 preview4 004233 因此 每当我使用命令创建新项目时dotnet new t Console我看不见project json虽然我看到 cspr
  • 如何在quarkus microprofile案例中配置rest客户端

    当使用 Quarkus microprofile 作为 REST 客户端时 如何配置底层 HttpClient 比如重试次数 每个主机的连接池大小等等 另外是否可以以某种方式强制客户端重新启动 因此连接池将重新启动 https downlo
  • 转发器内动态控件的视图状态问题

    最近 我在使用要添加动态控件的中继器时遇到了一个问题 虽然我有一个解决方法 在功能上完全符合我想要的功能 但我想知道是否有更好的方法为了我的理解 我使用 ASP NET 已经有大约 6 个月了 每次我认为我已经掌握了页面生命周期 视图状态时
  • 使用expect脚本从远程机器执行ssh

    我是expect脚本的新手 并且有一个用例 在该用例中 我需要从已经使用expect脚本完成ssh的机器上执行ssh 这是我的代码片段 usr bin expect f set timeout 60 spawn ssh email prot
  • 向 Google 地图添加多个标记

    我希望为 Google 地图 v3 API 中列出的每个商家添加标记在本页 http www inside guides co uk brentwood shops and shopping clothes shops html在右上角 我
  • 按列值动态过滤 jTable

    我需要根据特定列中的值动态过滤 JTable 因此 如果我有 2 列 例如 国家 地区 和 首都 我只想按 国家 地区 列进行过滤 我通过实现以下代码找到了问题的部分解决方案 import java awt BorderLayout imp
  • 在 t.string 的预定义值中进行选择

    是否有可能创建一个 collection select or select tag for a t string 用户可以在哪里选择字符串的预定义值 并且只允许将那些值存储在字符串的数据库中 例如 t string relationship
  • 使“gradle javadoc”任务与 Java 9 一起工作

    我有一个使用 source target 1 9 1 9 的多模块 Gradle Java 项目 有两个模块 my base and my dependsOnBase The my base模块没有其他依赖项 module my base
  • Spring 中的 ElasticSearch 与 @Query

    我已经使用 ElasticSearch 的 plugin head 接口成功创建了一个查询 该查询旨在返回特定位置的特定设备的最新时间戳 该查询如下所示 query bool must term deviceevent location i