在django-haystack中使用more_like_this的elasticsearch异常

时间:2013-01-02 20:20:50

标签: elasticsearch django-haystack

我在使用elasticsearch配置时遇到了more_like_this django-haystack函数的问题 - 由于某种原因它在控制台中返回了一些奇怪的错误。这是python中的代码:

from haystack.query import SearchQuerySet
sqs= SearchQuerySet().filter(django_ct__exact='myapp.mymodel')
similar_items= sqs.more_like_this(myapp.mymodel.object)

这实际上返回了所有模型的结果,尽管有过滤(这是一个肮脏的技巧,我知道,对不起)

加上日志中有一条消息:

Failed to fetch More Like This from Elasticsearch for document 'myapp.mymodel.21': Non-OK response returned (500):
u'SearchPhaseExecutionException [
Failed to execute phase [query],
total failure;
shardFailures {
[GKAIomI1QXedjKQOh5dcbw][haystack][0]: RemoteTransportException[[Amina Synge] [inet[/192.168.1.100:9302]][search/phase/query]];
nested: SearchParseException [[haystack][0]: from[20],
 size[-1]: Parse Failure [
     Failed to parse source [
         {"from":20,
          "size":-10,
          "query":{
              "bool":{
                  "must_not":{"term":{"_uid":"modelresult#myapp.mymodel.21"}},
                  "should":[{"mlt_field":{"django_id":{"like_text":"21"}}},
                            {"mlt_field":{"text":{"like_text":"<mymodel.textfield content>"}}},
                            {"mlt_field":{"user":{"like_text":"<mymodel.instance.username>"}}},
                            {"mlt_field":{"mymodel.instance_id":{"like_text":"21"}}},
                            {"mlt_field":{"id":{"like_text":"myapp.mymodel.21"}}}]}}}]]];
nested: SearchParseException[[haystack][0]: from[20],size[-1]: Parse Failure [size is set to [-10] and is expected to be higher or equal to 0]]; }

我是弹性搜索的新手,所以,我真的不明白这个例外的含义,以及如何更改size。根本无法在手册中找到它。按短语搜索效果很好,只有more_like_this会产生此错误。

任何帮助,任何提示都非常感谢,并为可能的蹩脚问题感到抱歉

0 个答案:

没有答案