Elasticsearch使用其他文档过滤和排序结果

dffbzjpn  于 5个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(48)

我有一个索引,有两种类型的文件:
文档book,字段:

  • ID
  • 标题
  • 作者等…

和一些带有字段的stats文档

  • book_id
  • 访问日期
  • 访问数

其中book_id是“书”文档idvisit_date是yyyy-MM-dd,visits_count是整数
我想搜索booktitleauthor或其他内容,并使用book_id作为参考,从文档“stats”中使用过去4周(使用visits_date)的visits_count的总和对结果进行排序
这是可能的吗?或者我必须改变文件,也许使用嵌套的?
我试过这个没有运气

{
  "index": "my_index",
  "body": {
    "query": {
      "bool": {
        "must": [
          {
            "match": {
              "title": "my term"
            }
          }
        ]
      }
    },
    "aggs": {
      "group_by_entity_id": {
        "terms": {
          "field": "book_id",
          "size": 10
        },
        "aggs": {
          "filtered_date_range": {
            "filter": {
              "range": {
                "visits_date": {
                  "gte": "now-4w/w"
                }
              }
            },
            "aggs": {
              "total_visits": {
                "sum": {
                  "field": "visits_count"
                }
              }
            }
          }
        }
      }
    },
    "size": 0
  }
}

字符串
非常感谢

ws51t4hk

ws51t4hk1#

您可以将sort search results与任何keywordinteger字段一起使用。

PUT /my-index-000001/_doc/1?refresh
{
   "product": "chocolate",
   "price": [20, 4]
}

POST /_search
{
   "query" : {
      "term" : { "product" : "chocolate" }
   },
   "sort" : [
      {"price" : {"order" : "asc", "mode" : "avg"}}
   ]
}

字符串

相关问题