首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索排序在弹性搜索中对单个文档的_source中的数据进行分页

搜索排序在弹性搜索中对单个文档的_source中的数据进行分页
EN

Stack Overflow用户
提问于 2022-08-30 17:11:36
回答 1查看 28关注 0票数 0

在弹性搜索索引中,我们有一个多个文档,但是一个文档与其他文档不同。它包含没有其他文档的供应商产品映射,因此它是索引中的同类文档之一。如下所示:

代码语言:javascript
复制
    {
      "_index": "portal_support_20200911",
      "_type": "_doc",
      "_id": "techno_products",
      "_version": 20220829,
      "_seq_no": 39,
      "_primary_term": 1,
      "found": true,
      "_source": {
        "doc_name": "techno_products",
        "updated_on": "20220829",
        "products": [
          {
            "vendor": "Apple",
            "product": "Iphone"
          },
          {
            "vendor": "Samsung",
            "product": "Galaxy Z"
          },
          {
            "vendor": "Volkswagen",
            "product": "Passat"
          },
          {
            "vendor": "Volkswagen",
            "product": "Tiguan"
          }
        ]
      }
    }

它在“产品”数组中有数千个供应商产品映射。我们的要求是编写一个弹性搜索查询来获取这个文档的数据,但是我们也希望通过ES查询搜索、排序和分页这个“产品”数组的元素。意味着我们希望通过ES查询搜索、排序和分页该ES文档的_source。

例如,按“供应商”或“产品”按desc顺序排序"products“数组。因为这个数组有数千个条目,所以我们希望一次分页并获得100个元素,然后在下一页,下一个100,等等。我们还希望提供类似于vendor=Volkswagen的搜索选项,因此在弹性搜索查询的输出中只提供匹配的元素。

我是专家的新手,但据我所知,我们可以在ES中按字段搜索、排序和分页文档。

但是,在弹性搜索中,我们也可以在_source中搜索、排序和分页数据吗?如何使用弹性搜索查询实现这一点?

请帮我一把谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-09-02 16:24:09

我想你是在找内在命中

如果有嵌套查询,可以添加inner_hits作为选项:

代码语言:javascript
复制
{
  nested: {
    path: "products",
    query: {
      term: {
        "field": "term"
      }
    },
    inner_hits: {
      size: 10000,
      sort: [
        {
          "products.product": "desc",
        },
      ]
    }
  }
}

如果您从未使用嵌套查询检索文档,我认为您可以添加嵌套查询并在嵌套查询中使用match_all: {}

代码语言:javascript
复制
{
  nested: {
    path: "products",
    query: {
      match_all: {}
    },
    inner_hits: {
      size: 10000,
      sort: [
        {
          "products.product": "desc",
        },
      ]
    }
  }
}

您可以在from中使用inner_hits对结果进行分页。

我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73546230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档