1

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

4

2 回答 2

2

弹性“索引”操作中有一个参数称为“刷新”,具有三个选项。如果您设置 refresh='true' 则在弹性添加数据到索引后,您将获得索引操作的响应。从这里:在此处输入链接描述

refresh – 如果为 true,则刷新受影响的分片以使此操作对搜索可见,如果 wait_for 则等待刷新以使此操作对搜索可见,如果为 false(默认值)则不执行任何刷新。有效的选择是:'真','假','wait_for'</p>

于 2019-08-24T05:48:36.957 回答
0

问题是搜索是在索引该测试数据后立即进行的。可能 Elasticsearch 没有足够的时间来索引数据并进行搜索,结果我的命中率为零。如果索引发生在与搜索不同的时间点,那么一切都会按预期工作。这种行为纯粹是我们当前正在运行的早期测试的结果。

于 2017-08-17T09:06:53.943 回答