优化MLT elasticsearch查询

时间:2016-01-29 17:01:39

标签: performance elasticsearch

我想应用more like this查询,所以我使用它(弹性搜索的python包装器):

{
    "query": {
        "more_like_this": {
            "fields": ["title", "content"],
            "docs": [
                {
                    "_index": "kavosh",
                    "_type": "articles",
                    "_id": str(news_id)
                }
            ]
        }
    },
    "size": 1,
}

但我有很多超时。所以我决定将mlt检查范围缩短到一周。 (它有效吗?)例如添加:

    {
        "range": {
            "publication_date": {
                "lte": now,
                "gte": now - 1week
            }
        }
    }

如何将此过滤器应用于MLT查询,您是否有任何建议来优化查询?

1 个答案:

答案 0 :(得分:1)

您可以使用以下查询:

{
"query": {
  "filtered": {
     "query": {
        "more_like_this": {
           "fields": [
              "title",
              "content"
           ],
           "docs": [
              {
                 "_index": "kavosh",
                 "_type": "articles",
                 "_id": str(news_id)
              }
           ]
        }
     },
     "filter": {
        "range": {
           "publication_date": {
              "lte": "now",
              "gte": "now - 1week"
           }
        }
     }
  }
  }
}

希望它有所帮助。