Elasticsearch查询按脚本排序[语法]

时间:2015-04-21 08:35:08

标签: sorting random syntax elasticsearch

我正在尝试使用随机脚本suggested here

对查询进行排序

我很难验证并运行我的查询,因为它一直让我回复错误。

我正在运行的查询是:

{
  "sort": {
    "_script": {
      "script": "(doc['_id'].value + salt).hashCode()",
      "type": "string",
      "params": {
        "salt": "some_random_string"
      },
      "order": "asc"
    }
  },
  "query": {
    "filtered": {
      "filter": {
        "and": [
          {
            "exists": {
              "field": "location"
            }
          },
          {
            "terms": {
              "streamIds": [
                796
              ]
            }
          }
        ]
      }
    }
  }
}

没有排序的查询工作并返回结果。

我做错了什么?

我尝试过查询suggested here,但无济于事。

1 个答案:

答案 0 :(得分:0)

发现Elasticsearch禁用了1.4.3中的脚本,这就是它无效的原因。

有效的代码:

{
   "query": {
      "function_score": {
         "query": {
            "filtered": {
               "filter": {
                  "and": [
                     {
                        "exists": {
                           "field": "location"
                        }
                     },
                     {
                        "terms": {
                           "streamIds": [
                              796
                           ]
                        }
                     }
                  ]
               }
            }
         },
         "random_score": {}
      }
   }
}