【问题标题】:Nested sorting with path and filter in Spring Data Elastic Search在 Spring Data Elastic Search 中使用路径和过滤器进行嵌套排序
【发布时间】:2019-10-02 01:09:16
【问题描述】:

我有这段代码需要转换成 spring-data-elastic-search。

 {
  "query": {
    "match_all": {}
  },
  "size": 10,
  "from": 0,
  "sort": [
    {
      "program.title.descriptions.value.keyword": {
        "order": "asc",
        "nested": {
          "path": "program.title.descriptions",
          "filter": {
            "match": {
              "program.title.descriptions.length": "LONG"
            }
          }
        }
      }
    }
  ]
}

我已经尝试过了,

SortBuilder sb = SortBuilders.fieldSort(sortBy).order(sortOrder).setNestedSort(new NestedSortBuilder(nestedPath))

但我不知道如何将“过滤器”部分添加到 SortBuilder 中。如果我尝试以下方法,

QueryBuilder matchFirst = QueryBuilders.boolQuery().filter(QueryBuilders.matchQuery("program.title.descriptions.length", "LONG"));
sb = SortBuilders.fieldSort(sortBy).order(sortOrder).setNestedSort(new NestedSortBuilder(nestedPath)).setNestedFilter(matchFirst);

它会说

java.lang.IllegalArgumentException: Setting both nested_path/nested_filter and nested not allowed
    at org.elasticsearch.search.sort.FieldSortBuilder.setNestedFilter(FieldSortBuilder.java:213)

任何想法将不胜感激。

【问题讨论】:

    标签: sorting elasticsearch spring-data-elasticsearch


    【解决方案1】:

    您需要在嵌套查询中设置过滤器。你可以试试

    SortBuilder sb = SortBuilders.fieldSort(sortBy).order(sortOrder).setNestedSort(new NestedSortBuilder(nestedPath).setFilter(matchFirst));
    

    【讨论】:

      猜你喜欢
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-10
      • 1970-01-01
      相关资源
      最近更新 更多