3

テストセットアップ用にsolr 6.6.1を構成しました。いくつかのドキュメントをインデックス化した後、いくつかのフィールドを更新する必要があります。solrの python クライアントを使用しています。更新するには、以下は私のコードスニペットです

import solr

def update_solr_index(_id, _value):
    print solr_conn2.add( id = _id, group2 = _value)

core_ulr = "http://localhost:8983/solr/use"
solr_conn2 = solr.SolrConnection(core_ulr)
update_solr_index(doc_id, field_value)

実行 (およびコミット) 後、他のすべてのフィールドはすべてのドキュメントから削除され、doc_id と group2 の 2 つのフィールドだけが残ります。この API または私のコードの問題は何ですか?

4

1 に答える 1

3

APIに問題はありません。コレクションに既に存在する ID フィールドを持つドキュメントを追加するように solr に要求しています。以下のアクションが solr で発生します。

  • 同じ ID を持つ既存のドキュメントを削除します

  • その API 呼び出しで指定されたフィールドのみを含む新しいドキュメントを追加します

あなたが探している解決策は、ドキュメントの部分的な更新です。

このAtomic 更新の詳細については、参照リンクを参照してください。

ドキュメントで更新するフィールドのマップ オブジェクトを送信する必要があります。

solr_conn2.add(id=_id, group2=*****)

group2 の値は、{'set':'value...'} のようなマップである必要があります。

おそらく、この同様のスタックオーバーフローソリューションの同様の回答を参照できます

于 2017-11-13T10:23:25.450 に答える