title: How add sorting to spring data elasticsearch
body: <p>I m writing an api using elasticsearch spring data and I want to add ordering.I cant find a resolve in google. So I write here to ask you guys how I can do that. If you will need more code please tell me what u need and I try to add more code.</p>
  
  <p>My code looks like:</p>
  
  <p>AuctionQueryController.java</p>
  
  <pre><code>@RequestMapping(value = "/auctions/search", produces = MediaType.APPLICATION_JSON_VALUE)
      private List&lt;Auction&gt; search(
              @RequestParam(value = "categoryId", required = false) Long categoryId,
              @RequestParam(value = "treeCategoryId", required = false) Long treeCategoryId,
              @RequestParam(value = "currency", required = false) String currency,
              @RequestParam(value = "priceFrom", required = false) Long priceFrom,
              @RequestParam(value = "priceTo", required = false) Long priceTo,
              @RequestParam(value = "startDateFrom", required = false) Long startDateFrom,
              @RequestParam(value = "startDateTo", required = false) Long startDateTo,
              @RequestParam(value = "endDateFrom", required = false) Long endDateFrom,
              @RequestParam(value = "endDateTo", required = false) Long endDateTo,
              @RequestParam(value = "title", required = false) String title,
              @RequestParam(value = "uid", required = false) Long uid,
              Pageable pageable) {
  
          final AuctionIndexSearchParams searchParams = AuctionIndexSearchParams.builder()
                  .categoryId(categoryId)
                  .treeCategoryId(treeCategoryId)
                  .currency(currency)
                  .priceFrom(priceFrom)
                  .priceTo(priceTo)
                  .startDateFrom(startDateFrom)
                  .startDateTo(startDateTo)
                  .endDateFrom(endDateFrom)
                  .endDateTo(endDateTo)
                  .title(title)
                  .uid(uid)
                  .build();
  
          return auctionService.searchByIndexParams(searchParams, pageable);
      }
  </code></pre>
  
  <p>AuctionService.java</p>
  
  <pre><code>public List&lt;Auction&gt; searchByIndexParams(AuctionIndexSearchParams searchParams, Pageable pageable) {
          final List&lt;FilterBuilder&gt; filters = Lists.newArrayList();
          final NativeSearchQueryBuilder searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery());
  
          Optional.ofNullable(searchParams.getCategoryId()).ifPresent(v -&gt; filters.add(boolFilter().must(termFilter("cat", v))));
          Optional.ofNullable(searchParams.getCurrency()).ifPresent(v -&gt; filters.add(boolFilter().must(termFilter("curr", v))));
          Optional.ofNullable(searchParams.getTreeCategoryId()).ifPresent(v -&gt; filters.add(boolFilter().must(termFilter("tcat", v))));
          Optional.ofNullable(searchParams.getUid()).ifPresent(v -&gt; filters.add(boolFilter().must(termFilter("uid", v))));
  
         final BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
  
          if (Optional.ofNullable(searchParams.getTitle()).isPresent()) {
              boolQueryBuilder.should(queryStringQuery(searchParams.getTitle()).analyzeWildcard(true).field("title"));
          }
  
          if (Optional.ofNullable(searchParams.getStartDateFrom()).isPresent()
                  &amp;&amp; Optional.ofNullable(searchParams.getStartDateTo()).isPresent()) {
              filters.add(rangeFilter("start_date").from(searchParams.getStartDateFrom()).to(searchParams.getStartDateTo()));
          }
  
          if (Optional.ofNullable(searchParams.getEndDateFrom()).isPresent()
                  &amp;&amp; Optional.ofNullable(searchParams.getEndDateTo()).isPresent()) {
              filters.add(rangeFilter("end_date").from(searchParams.getEndDateFrom()).to(searchParams.getEndDateTo()));
          }
  
          if (Optional.ofNullable(searchParams.getPriceFrom()).isPresent()
                  &amp;&amp; Optional.ofNullable(searchParams.getPriceTo()).isPresent()) {
              filters.add(rangeFilter("price").from(searchParams.getPriceFrom()).to(searchParams.getPriceTo()));
          }
  
          searchQuery.withPageable(pageable);
          searchQuery.withQuery(boolQueryBuilder);
          FilterBuilder[] filterArr = new FilterBuilder[filters.size()];
          filterArr = filters.toArray(filterArr);
          searchQuery.withFilter(andFilter(filterArr));
  
          final FacetedPage&lt;AuctionIndex&gt; search = auctionIndexRepository.search(searchQuery.build());
  
          return search.map(index -&gt;
                          auctionRepository.findAuctionById(Long.valueOf(index.getId()))
          ).getContent();
      }
  </code></pre>