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

Guy*_*vin 6 node.js elasticsearch

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

这有效:

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

}
Run Code Online (Sandbox Code Playgroud)

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

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

它返回一个错误:

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


status :400
Run Code Online (Sandbox Code Playgroud)

我尝试过JSON.stringify各种各样的东西,但没有一个能奏效

拜托,任何人都可以帮助我吗?

Val*_*Val 9

试试这个:

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


Mar*_*ton 5

这也适用于它周围的方括号,因此您可以添加多个排序条件,例如 ['_uid:desc', 'id:asc']

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