【问题标题】:Sorting on elastic search with node js使用节点 js 对弹性搜索进行排序
【发布时间】:2016-12-09 09:01:17
【问题描述】:

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

这行得通:

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

}

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

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 和其他各种方法,但都不起作用

请问,谁能帮帮我?

【问题讨论】:

  • 什么意思?你能写一个例子吗?
  • 谢谢!你确定我必须有身体吗?那里有没有身体的例子。而且,当我删除 'sort: [{ "_uid": { "order": "desc" } }]' 行时,它可以正常工作
  • 感谢@Vsevolod Goloviznin,我已阅读文档,添加了正文,但不幸的是,我仍然遇到相同的错误 - 找不到 [[object Object]] 的映射按顺序排序
  • 那么,您可以用您尝试过的内容更新您的问题吗?

标签: node.js elasticsearch


【解决方案1】:

试试这个:

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

【讨论】:

  • 感谢@Vsevolod Goloviznin
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    这也有效:

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

    【讨论】:

      猜你喜欢
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2019-01-26
      • 2016-01-13
      • 1970-01-01
      相关资源
      最近更新 更多