Nestを使用してデータベースに複数のレコードを挿入しようとしています。IndexManyクラスを使用した挿入は機能しますが、json文字列でオブジェクトを挿入する必要もあります。
私はgithubを調べて、RAWclientの使用方法の例をいくつか見つけました。コード例の下に、jsonを挿入します。
> var twitter = _jsonData;
> var result = client.Raw.BulkPost(
> new { twitter }
> , qs => qs
> //.Replication(ReplicationOptions.Async)
> .Refresh(true) );
いくつかの追加情報:
調査:
tweet tweet1 = new tweet { id = "104", name = "test104", lastname = "test107" }; //ect....
List<tweet> data; //multiple tweet objects are added
string json = Newtonsoft.Json.JsonConvert.SerializeObject(data);
var twitter:
{
"twitter": "[{'name':'test104','lastname':'test107','id':'104'},{'name':'test105','lastname':'test108','id':'105'},{'name':'test106','lastname':'test109','id':'106'}]"
}
データベースから受け取った結果:
{"error":"Unexpected end-of-input: expected close marker for OBJECT (from [Source: [B@10893e4; line: 1, column: 0])\n at [Source: [B@10893e4; line: 2, column: 3]"}
誰かが問題が何であるか知っていますか?または、切り取られたjson / codeに何が欠けていますか?
jsonはelasticsearchの一括操作に対して正しくありません。ドキュメントを参照してください。
一括リクエストでは、すべてのデータオブジェクトの前にコマンドを付ける必要があります。これは、単一の一括リクエストには、挿入だけでなく、挿入、更新、または削除を含めることができるためです。したがって、jsonは次のようになります。
{ "index" : { "_index" : "twitter", "_type" : "tweets" } }\n
{'name':'test104','lastname':'test107','id':'104'}\n
{ "index" : { "_index" : "twitter", "_type" : "tweets" } }\n
{'name':'test105','lastname':'test108','id':'105'}\n
{ "index" : { "_index" : "twitter", "_type" : "tweets" } }\n
{'name':'test106','lastname':'test109','id':'106'}\n
繰り返しのコマンドによるオーバーヘッドを減らすために、いくつかの引数をリクエストURIに移動できます。次に、jsonを短くすることができます。
{ "index" : { } }\n
{'name':'test104','lastname':'test107','id':'104'}\n
IRawElasticClientでは、BulkPost引数に移動することを意味します。
var result = client.Raw.BulkPost(new { twitter }, "twitter", "tweets");
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加