elasticsearch-dsl搜索仅在调试模式下有效

时间:2017-08-16 21:42:32

标签: python elasticsearch elasticsearch-dsl elasticsearch-dsl-py

我在我的项目中使用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次点击。我不知道为什么会这样,我已经花了半天时间试图找到解决方案。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

问题是在索引测试数据后立即进行搜索。潜在的Elasticsearch没有足够的时间来索引数据并进行搜索,结果我获得了零点击。如果索引发生在搜索的不同时间点,那么它全部按预期工作。这种行为纯粹是我们目前正在运行的早期测试的结果。

答案 1 :(得分:0)

在弹性“索引”操作中有一个参数称为“刷新”,具有三个选项。如果设置refresh ='true',则在将数据弹性添加到索引后,您将从索引操作中获得响应。 从这里:enter link description here

  

refresh –如果为true,则刷新受影响的分片以使该操作可见以进行搜索;如果wait_for,则等待刷新以使该操作可见以进行搜索;如果为false(缺省值),则不执行任何刷新操作。是:“ true”,“ false”,“ wait_for”