2016-10-27 3 views
0

私はSolr6.2を使用していて、リレーショナルdbのような文書内の特定のフィールドを更新したいと思う:update table_a set field_x = filed_x + 1;Solrの特定のフィールドを更新する

Solrでそれを達成するには? ありがとうございます。

答えて

2

これを行うには、Updating Parts of DocumentsのSolrのサポートを使用できるので、すべてのフィールドを格納済みに設定する必要があります。

これで、文書内のフィールドをインクリメントするincコマンドを使用することができます。

{ 
    "id":"mydoc", 
    "popularity":{"inc":20} 
} 

内部更新は、「文書、変更値、REINDEXドキュメントを取得する」であるので、すべてのフィールドが格納されているように設定する必要があります。 6.2でデフォルトのスキーマレススキーマ..スキーマを使用している場合、すべてのフィールドはデフォルトで保存されます。カスタムスキーマを使用している場合や、スキーマAPIを使用してフィールドを手動で変更した場合は、すべてがストアドとして設定されていることを確認する必要があります。

更新:

はSolrJの場合、このようなものは、(from Yonik's postを)動作するはずです:あなたの応答のための

SolrInputDocument doc = new SolrInputDocument(); 

doc.addField("id", "test"); 
Map<String, String> cmd2 = new HashMap<>(); 
cmd1.put("inc", "20"); 
doc.addField("field1", cmd1); 
client.add(collection, doc); 
+0

本当にありがとう、私は何かを逃すことがあります。私はSolrJを使いたいのですが、どのクラス/メソッドが同じ結果を得ることができるのか分かりません。 –

関連する問題