2016-09-08 2 views
0

Можно ли сортировать на основе элемента, существующего в многозначном поле?Сортировка Elasticsearch на основе элемента в многозначном поле

Пример:

a) document with "111" 

put test/test/1 
{ 
    "bit_position" : [ 
     1, 
     2, 
     3 
    ] 
} 

b) document with 010 
put test/test/2 
{ 
    "bit_position": [ 
     2 
    ] 
} 

Сортировку на основе "bit_position" = 3 должен возвращать документ А, а затем б.

Я читал об этом возможно как вложенное поле, но не может найти никакой информации об этом, когда bit_position не вложен.

Я нашел этот вопрос: Sorting by value in multivalued field in elasticsearch, но он не получил ответа.

Спасибо

ответ

0

Я решил эту проблему с помощью function_score:

POST test/_search 
{ 
    "query": { 
     "function_score": { 
      "match_all": {}, 
      "functions": [ 
       { 
        "filter": { 
         "terms": { 
          "bit_position": [ 
           1, 
           3 
          ] 
         } 
        }, 
        "weight": 2 
       } 
      ], 
      "score_mode": "multiply" 
     } 
    } 
} 
Смежные вопросы