2016-07-07 17 views
0

私のC#コードから私のElasticsearchサーバにバイナリパラメータを保存したいと思います。 インデックスクラスで使用しようとしたタイプはどれも、それに変換されませんでした。NEST(elasticsearch)でバイナリタイプを使用する

私のプログラムにバイナリを格納するよう明示的に指示する方法はありますか?バイト配列から(他の種類のコースに変換することはできますか)

また、(Jsonプロパティ"stored": falseのように)パラメータを保存しないように設定する方法がありますか?私にとっての主な問題は、その大きなパラメータ(理想が、十分ではない)

更新のコピーやインデックスであるとして:私は

[ElasticProperty(Name = "Data", Type = FieldType.Binary, Store = false)] 
public byte[] Data { get; set; } 

属性を使用するために1.6.1に私のNESTのバージョンをダウングレードしようとしたが、私はそのプロパティで文書を保存するとき、それはまだ文字列をマップするために主張(私は私の感覚プラグインでGET mydb/_mappingを実行して確認してください)

答えて

4

Elasticsearch supports binary types NEST 1.xの

に次のように使用してNEST内の属性を使用して設定することができ バイナリタイプはベース64エンコードされた文字列( 1.x docs又は 2.x docs)としてElasticsearchに送信されるべきであることを

またはNEST 2.xで

public class Document 
{ 
    [Binary(Store= false)] 
    public string Binary { get; set; } 
} 

注意。あなたがモデルにBinaryBytesを設定します次に

{ 
    "mappings": { 
    "document": { 
     "properties": { 
     "binary": { 
      "type": "binary" 
     } 
     } 
    } 
    } 
} 

を生み出す(2.xのための)のようなもの

public class Document 
{ 
    [JsonIgnore] 
    public byte[] BinaryBytes { get; set;} 

    [Binary] 
    [JsonProperty("binary")] 
    public string Binary 
    { 
     get 
     { 
      return BinaryBytes != null ? Convert.ToBase64String(BinaryBytes) : null; 
     } 
     protected set 
     { 
      if (value != null) BinaryBytes = Convert.FromBase64String(value); 
     } 
    } 
} 

client.CreateIndex("index-name", c => c 
    .Mappings(m => m 
     .Map<Document>(d => d 
      .AutoMap() 
     ) 
    ) 
); 

であなたのPOCOタイプに変換を扱うことができる、とNESTは、内容を送信します要求にBinaryBinaryをモデルのユーザーにあまり混乱させないようにするには、プライベートプロパティを作成することもできます。

+0

あなたの助けを借りてくれてありがとう、それだけでは、それ自体でそれをやってくれたのではなく、 'client.CreateIndex'部分を追加しているようです。 –

+0

@OdedSayar Elasticsearchが起きるのを助ける2つのことがあります実行中。最初に、まだ存在しない場合は自動的に索引を作成します。この動作は、 - https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html#index-creationで制御できます。第2に、ドキュメントタイプに対して明示的なマッピングが指定されていない場合、ドキュメントのフィールドを動的にマッピングする(すなわち、タイプを推論する)。これも制御できます - https://www.elastic.co/guide/en/elasticsearch/guide/current/dynamic-mapping.html –

関連する問題