2016-05-31 2 views
1

私の次の問題は、私はアイテムのリストを持っており、elasticsearchでそれらのインデックスを付けることです。実行中のelasticsearchインスタンスがあり、このインスタンスには「default」というインデックスがあります。エラスティックサーチネストインデックスとインデックス

だから私は、次のコードを実行しています:私もClient.IndexManyAsync(items)でそれを試してみました

var items = GetAListOfItem(); 
var response = Client.IndexMany(items); 

を。しかし、それは何もしませんでした。

このリストの1つの項目のみが索引付けされます。これ以上何もない。私はそれが索引付けされた最後のアイテムだと思います。

私はそれがIEnumerableと複数の列挙型のものかもしれないと思っていましたが、私はそれをList<Item>として解析しました。

もう1つの質問は、Elasticsearchのベストプラクティスに関するものです。モデルごとのインデックスを使用するのが一般的ですか?だから、たとえばExchangeや別のシステムからデータを集めているなら、私は2つのindecesをするだろうか?

  1. ExchangeIndex
  2. OtherSystemIndex

あなたの助けをいただき、ありがとうございます。

更新: Client.Indexがこれらの呼び出しをすべて成功させることがわかりましたが、これらのオブジェクトはすべてNESTから同じIDを取得しました。通常、彼女は自分自身で増加しなければならなかった、それはない?

更新2:インデックス作成の問題を修正しました。私は空のIDフィールドをセットアップしました。

しかし、Elasticsearchについては、まだ最も実用的な質問があります。

答えて

1

同じIDを持つすべてのデータをアップロードしている場合、IDを増やさずにそのIDでレコードを更新します.1つのレコードしか持たないので、IDなしでデータをアップロードしたり、レコードを特定するための一意のID。 もう1つの一般的な問題は、レコードの索引と同じマッピングがないことです。

他の質問について、インデックスには、関連性の高い情報が格納されていますが、多くのモデルのコンテンツが含まれていても避けなければならないのは、サーバーログは、たとえば、ユーザーの活動と混合してはいけません。

+0

ありがとうございます。上記のように、私はIDフィールドを設定しても、それを埋めることはできないという問題がありました。私は今それを削除しました。 Exchangeとデータベースからデータを収集しています。したがって、1つのモデルは電子メールであり、別のモデルは基本的に連絡先などです。あなたの例から、私は2つのindecesをやっていると言うでしょうか? – Marius

+0

あなたの例では、あなたの例では、単にインデックスに電子メールを置いてはいけませんが、インデックスデータを豊かにし、連絡先情報や関連情報(インデックスの目的で考える必要があります)したがって、何かを得るために複数のインデックスをクエリする必要はありません。このシステムでは、データが重複している方が処理が速いことがあります。 –

関連する問題