使用节点js对弹性搜索进行排序

时间:2016-08-03 14:51:09

标签: node.js elasticsearch

出于某种原因,当我尝试从索引中搜索和排序

这有效:

GET indexName/_search
{      
    "sort": [{
      "_uid": { "order": "desc" }
    }],
    "size": 1

}

但是,当使用这样的节点j时:

elasticClient.search({
     index: indexName,
     type: id,
     sort: [{ "_uid": { "order": "desc" } }],
     size: 1
 })

它返回错误:

No mapping found for [[object Object]] in order to sort on


status :400

我已经尝试了JSON.stringify以及其他各种各样的事情,但它们都没有效果

拜托,有人可以帮助我吗?

3 个答案:

答案 0 :(得分:8)

请改为尝试:

elasticClient.search({
     index: indexName,
     type: id,
     body: {
        sort: [{ "_uid": { "order": "desc" } }],
        size: 1,
        query: { match_all: {}}
     }
 })

答案 1 :(得分:0)

这也有效:

elasticClient.search({
     index: indexName,
     sort: '_uid:desc',
     type: id,
     body: {
        size: 1,
        query: { match_all: {}}
     }
 })

答案 2 :(得分:0)

这也适用于方括号,因此您可以添加多个分类标准,例如['_uid:desc', 'id:asc']

elasticClient.search({
         index: indexName,
         sort: ['_uid:desc'],
         type: id,
         body: {
            size: 1,
            query: { match_all: {}}
         }
     })