当前位置: 首页 > 知识库问答 >
问题:

使用spring data elasticsearch搜索\u after

濮阳征
2023-03-14

是否有人成功地将search\u after与spring data elasticsearch一起使用?

我已经将_uid添加到我的排序中,@Controller正确地将其放入我的Pagable中。我打开了慢速查询日志并验证了如果我手动运行@Repository生成的查询,我会得到响应:

    "sort": [
      1522270372773,
      "log#AWJuYn7SAKReCIGzMYda"
    ]

我将以下内容添加到我的pojo(由@Repository返回的类):

 @JsonProperty("sort")
 String[] sort;

排序总是返回为null。尝试了两种不同的方法,但无法确定如何设置排序。有什么想法吗?

共有1个答案

邓高韵
2023-03-14

我已经解决了这个问题,但发现了一些令人失望的细节。

罪魁祸首在这里:https://github.com/spring-projects/spring-data-elasticsearch/blob/3.0.x/src/main/java/org/springframework/data/elasticsearch/core/DefaultResultMapper.java

在mapResults方法中,代码从SearchHit填充我的POJO。sourceAsString()。sourceAsString提供了原始JSON的子集,其中不包括排序数组,即。

   "sort": [
      1522270147602,
      "log#AWJuXxJ_AKReCIGzMYdV"
    ]

访问修饰符(没有getter和final的privates)没有提供优雅的增强。我最终复制了DefaultResultMapper并实现了一个类似于setPersistentEntityId的方法,该方法将SortValue设置到我的pojo中。该方法的impl如下:

private <T> void setSearchSortValues(T result, Object[] sortValues, Class<T> clazz) {

    if(SortAware.class.isAssignableFrom(clazz)) {
        ((SortAware) result).setSortValues(sortValues);
    }

}

我的POJO实现SortAware接口,我定义如下:

public interface SortAware {

    public Object[] getSortValues();

    public void setSortValues(Object[] sortValues);

}
 类似资料:
  • 我一直在尝试使用Java的二分搜索方法在单词数组(一个词典)中搜索一个特定的字符串,然后确定该字符串是单词、前缀还是不是单词。如果返回的索引大于或等于零,则字符串为单词。如果返回的索引小于零,那么我必须确定它不是一个单词,还是一个前缀。

  • 问题内容: 我在获取nHibernate.Search来创建索引时遇到了麻烦。 如果我使用nHibernate.dll和nHibernate.Search.dll的1.2.1.4,则可以正确创建索引,并且可以使用Luke(Lucene实用程序)对其进行检查。创建了一个segments文件以及一个Fragments文件等 但是,当我使用nHibernate.dll和nHibernate.Search

  • 我在处理一个单词搜索问题。我正确地实现了dfs搜索,但在其他地方有一些琐碎的错误。

  • 问题内容: 我正在尝试从“关键统计信息”页面中获取有关Yahoo中的代码的信息(因为Pandas库中不支持此功能)。 AAPL示例: 编辑:谢谢安迪! 问题:这正在打印一个空数组。如何更改退货? 问题答案: 好吧,返回的列表为空的原因是因为该数据是通过单独的调用生成的,仅通过向该URL发送请求就无法完成。如果浏览Chrome / Firefox上的“网络”标签并按XHR进行过滤,则通过检查每个网络

  • 这个插件增加了搜索树中项目甚至只显示匹配节点的可能性。 您可以在API中找到所有搜索插件配置选项. $(function () { $("#plugins4").jstree({ "plugins" : [ "search" ] }); var to = false; $('#plugins4_q').keyup(function () { if(to)

  • 启用搜索 Docusaurus 支持使用 Algolia DocSearch 进行搜索。 一旦你建立了你的网站,输入你的网站信息 来让 Algolia 抓取你网站的文档页面。 Algolia 会向您发送您的网站的 API 密钥和索引名称。 启用搜索栏 在 algolia 部分的 siteConfig.js 中输入您的搜索 API 密钥和索引名称,以启用您的网站搜索。 const siteConfi

  • 由于已经有很多关于连字符的问题,我已经尝试了以下解决方案: 使用字符筛选器:ElasticSearch-在名称中使用连字符进行搜索。 所以我做了这个映射: 所以char筛选器似乎没有在搜索字符串上执行?我该怎么做才能让它起作用?

  • 这里有两个代码段,我正在使用它们从具有“From Date”和“To Date”的日历中搜索日期。 错误消息显示:线程“main”组织中出现异常。openqa。硒。NoSuchElementException:没有这样的元素:无法定位元素:{“method”:“xpath”,“selector”:“//table/tbody/tr/a[包含(text(),'十月三十日')]”“}