elasticsearch dsl搜索仅在调试模式下工作

elasticsearch dsl搜索仅在调试模式下工作,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我在我的项目中使用Python中的elasticsearch dsl包。我有一个非常简单的搜索查询,如下所示: s = Search(using=connections.get_connection(), index= 'registry', doc_type=['storage_doc']).params(request_timeout=60) s.filter("match", postcode="SW1").query("match", forename="

我在我的项目中使用Python中的elasticsearch dsl包。我有一个非常简单的搜索查询,如下所示:

    s = Search(using=connections.get_connection(), index= 'registry', doc_type=['storage_doc']).params(request_timeout=60)        
    s.filter("match", postcode="SW1").query("match", forename="Brendan")                
    response = s.execute(ignore_cache=True)        
    print(response.success())
    print(response.took)
    print(response.to_dict()) 
    print('Total %d hits found.' % response.hits.total)


如果我在调试模式下执行它,这很好,但是当我从控制台运行代码时,我总是得到0次点击。我不知道为什么会发生这种情况,我已经花了半天时间试图找到解决办法。有什么想法吗?

问题是搜索是在对测试数据进行索引后立即进行的。潜在的Elasticsearch没有足够的时间索引数据并进行搜索,因此我的点击率为零。如果使用搜索在不同的时间点进行索引,那么一切都会按预期进行。这种行为纯粹是我们目前正在运行的早期测试的结果。

弹性“索引”操作中有一个参数称为“刷新”,有三个选项。若您设置了refresh='true',那个么在弹性地向索引添加数据之后,您将从索引操作得到响应。 从这里开始:

刷新–如果为true,则刷新受影响的碎片以使此操作对搜索可见;如果为wait_for,则等待刷新以使此操作对搜索可见;如果为false(默认值),则不执行刷新操作。有效选项为:“true”、“false”、“wait_for”


“调试模式”是什么意思?我正在使用VS代码并调试它。如果我处于调试模式,那么它可以工作。如果我运行python,那么它不是。真的很奇怪,我对这个IDE不太了解,但是有没有可能您的连接定义是在IDE中设置的呢?可能值得在控制台上使用
pdb
逐步了解这一点。