4

This is Spring Boot Data Elasticsearch (Embedded Elasticsearch).

I have a simple query:

{
  "query": {
    "match_phrase" : {
      "text" : "12"
    }
  }
}

And when I send this query via localhost:9200 there's an answer:

{
  "took": 56, "timed_out": false,
  "_shards": {"total": 1, "successful": 1, "failed": 0 },
  "hits": {
    "total": 5,
    "max_score": 0.3172162,
    "hits": [
     {
       "_index": "abc", "_type": "abc", "_id": "AWbzvDOghegm62vg48M5",
       "_score": 0.3172162,
       "_source": {
         "entityId": "5840", "text": "abc"
       }
     },
     {
       "_score": 0.3172162,
       "_source": {"entityId": "5838"}
     },
     {
       "_score": 0.3172162,
       "_source": {"entityId": "5834"}
     },
     {
       "_score": 0.26434684,
       "_source": {"entityId": "5850"}
     },
     {
       "_score": 0.26434684,
       "_source": {"entityId": "5846"}
     }
     ]
   }
 }

Everything is OK.

In project I have a Data ElasticsearchRepository:

public interface MyESEntityRepository extends ElasticsearchRepository<MyESEntity, String> {
    @Query("same ES query")
    List<MyESEntity> find(String q);
}

And here my problem: I sand the same query and receive same set but in a different order.

Through 9200 I receive next ordered by _score set with entityId: 5840 5838 5834 5850 5846.

ES Data Repository return: 5850 5846 5840 5838 5834. Thus, in this example, it looks as if it is a desc order by entityId. However, in a real query, something is different. Perhaps this is the order of time modification.

How to get order by _score?


With Pageable same effect:
Page<MyESEntity> find(String q, Pageable pageable);

and

find("12", new PageRequest(0, 10, new Sort(new Sort.Order(Sort.Direction.DESC,"_score")))).getContent();
Shklyar
  • 140
  • 1
  • 12
  • I think already answered here: https://stackoverflow.com/questions/28797075/elasticsearch-in-spring-with-query – jprogramista Nov 15 '18 at 12:00
  • @jprogramista There is an example of sorting by the fields of the entity. Immediately there is a temporary _score field is not sure that it can be accessed. But thanks, I'll try. – Shklyar Nov 15 '18 at 12:27

0 Answers0