Pythonからドキュメントをインデックスできない

トピック作成者:ks-solruserml-bot (2024/09/22 22:48 投稿)
2
OpenOpen

(The bot translated the original post https://lists.apache.org/thread/g8rqjt2y6qgo23hyygkpr1tpgjcv0b5x into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

こんにちは皆さん、

Solr 9.5.0にドキュメントをインデックスするためにPythonを使っています。schema.xmlを準備し、solrconfig.xmlに以下の行を挿入しました:
<schemaFactory class="ClassicIndexSchemaFactory"/>

その後、CBORベースおよびJSONベースのアプローチを試しましたが、どちらもうまくいきませんでした。1回のリクエストでインデックスしようとしたドキュメントの数は15,000件ですが、ドキュメントのサイズは小さく、0.5KBです。

送信したリクエストは次のとおりです:

response = requests.post("http://localhost:8983/solr/books/update/json?commit=true", data=json_data, headers={"Content-Type": "application/json"})
if response.status_code == 200:
    print("POST request sent successfully!")
    print("Response Body:", response.text)
else:
    print("Unexpected response status:", response.status_code)

時々正常に動作し、200ステータスコードが返されますが、時々400が返ってきます。エラーが返される場合、ログファイルには次のようなメッセージが表示されます:

2024-03-12 10:22:35.976 ERROR (qtp973843173-43-localhost-84) [c: s: r: x:books t:localhost-84] o.a.s.h.RequestHandlerBase Client exception =>
org.apache.solr.common.SolrException: This IndexSchema is not mutable.

よろしくお願いします。

Roland

返信投稿者:ks-solruserml-bot (2024/09/22 22:48 投稿)

バッチサイズをパラメータにして、異なるサイズでタイミングを測定してください。私のセットアップでは、1ノードの場合は5,000件のドキュメントが最適で、2ノードのミラーリング(シャード数=1、レプリカ数=2)"クラウド"では3,000件が最適でした。

15,000件では、サーバーに対してDoS攻撃のような負荷をかけているのではないかと強く疑っています。

Dima

返信投稿者:ks-solruserml-bot (2024/09/22 22:48 投稿)

ありがとう、Dima。

私のJSONのサイズはドキュメントが小さいため、わずか8MBでした。問題の根本原因を見つけました。他の人に役立つかもしれないので、簡単に説明します。

  1. schema.xmlを使用していました。
  2. Pythonコードのフィールド名にタイプミスがありました。
  3. update.autoCreateFields がデフォルトで true に設定されており、変更不可能なschema.xmlに新しいフィールドを作成しようとしていました(参照: StackOverflow)。

そのため、タイプミスを修正し、update.autoCreateFieldsfalse に変更しました。残念ながら、ログには自動作成フェーズでどのフィールドを作成しようとしたのかが表示されないため、タイプミスを見つけるのに時間がかかりました。

Roland

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2024 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?