You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch多query_string查询时按日期排序报错无法排序问题

问题根因

多query_string查询完全支持排序,你的报错和查询条件数量无关,是DSL结构配置错误导致的。

你当前提交的查询把sort参数放在了和index、size、body平级的请求顶层参数位置,但按照Elasticsearch的查询规范,sort属于body内部的顶层字段,需要和query同级放置。位置错误导致ES将整个sort配置对象误识别为待排序的字段名,所以抛出「No mapping found for [[object Object]] in order to sort on」的异常。
你之前仅使用单个query_string时能正常排序,是因为那时候的查询语句将sort正确放在了body内部,没有出现结构错误。

修正后的查询语句

{
  index: "news",
  size: 100,
  from: 100,
  body: {
    query: {
      bool: {
        must: [
          {
            query_string: {
              query: "(new york) or (big apple)",
              fields: ["title", "description"],
            },
          },
          {
            range: {
              created_by: {
                gte: "now-90d",
                lte: "now",
              },
            },
          },
        ],
      },
    },
    // sort挪到body内部,和query同级
    sort: [
      {
        created_by: {
          order: "desc",
          format: "strict_date_optional_time_nanos",
          unmapped_type: "date",
        },
      },
      "_score",
    ],
  }
}

内容的提问来源于stack exchange,提问作者neus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:51:00