Elasticsearch基于多值字段中的元素排序

时间:2016-09-08 02:05:46

标签: sorting elasticsearch multivalue

是否可以根据多值字段中存在的元素进行排序?

示例:

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的排序应返回文档a,然后返回b。

我读到这可能是嵌套字段,但在bit_position未嵌套时无法找到有关它的信息。

我发现了这个问题:Sorting by value in multivalued field in elasticsearch但尚未得到答复。

谢谢

1 个答案:

答案 0 :(得分:0)

我通过使用function_score解决了这个问题:

POST test/_search
{
    "query": {
        "function_score": {
            "match_all": {},
            "functions": [
                {
                    "filter": {
                        "terms": {
                           "bit_position": [
                              1,
                              3
                           ]
                        }
                    },
                    "weight": 2
                }
            ],
            "score_mode": "multiply"
        }
    }
}