4

pyes .search で fields=[...] パラメータを使用しようとすると失敗します

問題を説明するための簡単なテスト スクリプトを次に示します: 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 呼び出しでフィールドを使用すると機能します。

他の誰かがこれを見ましたか、または何が起きているかについての指針を持っていますか?

4

5 に答える 5

2

リライト

resultset = ES.search(query=q, indices='oolong', fields=["name"])

resultset = ES.search(Search(q, fields=['name']), indices='oolong'))
于 2014-07-22T20:50:31.490 に答える
1

私は pyes 0.19.1 を使用して同じ問題を抱えていますが、結果セットから単一のフィールドを取得できます。

次の行を置き換えます。

resultset = ES.search(query=q, indices='oolong', fields=["name"])

これに:

resultset = ES.search(query=q, indices='oolong', fields="name")

これは私にとってはうまくいきます。ただし、複数のフィールドを取得する方法がわかりません。リストをフィールドに渡すと、常に空の辞書が返されます。

于 2013-04-12T14:41:20.933 に答える
1

予期しない動作を説明する可能性のあるペーストビン コードで気づいたことの 1 つ - 更新 (37 行目) は検索 (36 行目) の前にある必要があります。それ以外の場合、ドキュメントがまだインデックスにコミットされている場合、競合状態が発生します。

于 2012-12-01T22:39:31.933 に答える
0

見て:

class pyes.query.Search(...)

そこにフィールド配列を設定できます。ES.search のフィールドが機能していません。

es_connection = ES(server=[('http', 'localhost', '9200')])
q = Search(fields=['field1', 'field2'], .....)
resultset = es_connection.search(
    q,
    ....
)
于 2013-06-04T23:33:21.967 に答える
0

これを使って

resultset = ES.search(query=q, indices='oolong', fields="name")

または、複数のフィールドを使用している場合

resultset = ES.search(query=q, indices='oolong', fields="name,id")
于 2016-06-03T12:20:52.543 に答える