如何通过elasticsearch基于每个组中的搜索词通过更新来获取最后3条记录顺序

时间:2019-04-12 05:51:25

标签: elasticsearch

我有多个内容类型“服务,个人资料,新闻,工作”,它们正在弹性搜索中被索引。我正在尝试根据搜索词提取文档。例如-

如果用户类型-“ California”-系统必须从每种内容类型返回前3条匹配记录。我有以下项目来构建查询-搜索字词,匹配[标题,描述,位置,服务,专业化]的字段,按内容类型[配置文件,服务,职位,博客]进行过滤。

我尝试过自己,这是查询

{
  "aggs": {
    "group": {
      "terms": {
        "field": "type.raw"
      },
      "aggs": {
        "group_docs": {
          "top_hits": {
            "sort": [
              {
                "date.updated": {
                  "order": "asc",
                  "unmapped_type": "date"
                }
              }
            ],
            "size": 3
          }
        }
      }
    }
  },
  "query": {
    "bool": {
      "must": {
        "multi_match": {
          "query": "work",
          "fields": [
            "title",
            "description",
            "services",
            "location",
            "area_of_specialization"
          ]
        }
      },
      "filter": {
        "bool": {
          "should": [
            {
              "term": {
                "type": "profile"
              }
            },
            {
              "term": {
                "type": "blog"
              }
            },
            {
              "term": {
                "type": "jobs"
              }
            },
            {
              "term": {
                "type": "services"
              }
            }
          ]
        }
      }
    }
  }
}

我正在使用弹性搜索6.5.3版。

任何帮助将不胜感激。

0 个答案:

没有答案