尝试在pyes中使用fields = [...]参数.search失败
这是一个简单的测试脚本来说明问题: http://pastebin.com/LiRMC3ib
使用当前版本的pyes 0.19.1,此脚本输出{}作为
的结果print resultset[0]
然而,使用之前的'旧'不稳定的0.19.1版本的pyes,我有 - 0.19.1(不稳定)的结果
print resultset[0]
是预期的:
{u'name': u'Joe Tester'}
使用ES.get调用中的字段工作。
其他人看到了这个或者有什么指示可以了吗?
答案 0 :(得分:2)
重写
resultset = ES.search(query=q, indices='oolong', fields=["name"])
到
resultset = ES.search(Search(q, fields=['name']), indices='oolong'))
答案 1 :(得分:1)
我在您的pastebin代码中注意到的一件事可以解释意外行为 - 刷新(第37行)应该在搜索之前(第36行)。否则,如果文档已提交到索引,则存在竞争条件。
答案 2 :(得分:1)
我使用pyes 0.19.1遇到了同样的问题,但我能够从结果集中检索单个字段。
替换此行:
resultset = ES.search(query=q, indices='oolong', fields=["name"])
到这一个:
resultset = ES.search(query=q, indices='oolong', fields="name")
这对我有用。我还没想出如何检索多个字段。当我将列表传递给 fields 时,它总是返回空字典。
答案 3 :(得分:0)
看看:
class pyes.query.Search(...)
在那里你可以设置一个字段数组。 ES.search上的字段无效。
es_connection = ES(server=[('http', 'localhost', '9200')])
q = Search(fields=['field1', 'field2'], .....)
resultset = es_connection.search(
q,
....
)
答案 4 :(得分:0)
resultset = ES.search(query=q, indices='oolong', fields="name")
或者如果您有多个字段使用
resultset = ES.search(query=q, indices='oolong', fields="name,id")