2016-04-28 27 views
1

以下のようにインデックスを設定します。しかし、今私はインデックス作成スタイルを微調整する必要があるため、要件があります。 (私は以下のコードでアナライザフィールドを追加する必要があります)。Elasticsearch NESTクエリのLINQ式

リファレンス[私の前の質問とその答え]:Elastic Search using NEST - Results different in debug and browser mode

どのように私は以下のようなマッピング設定で

var connectionSettings = new ConnectionSettings(pool) 
     .DefaultIndex(defaultIndex) 
     .MapDefaultTypeNames(m => m.Add(typeof(Class1), "omg")) 
     .PrettyJson() 
     .DisableDirectStreaming()); 

を書き換えることができます。私は、インデックスの作成とマッピングの間のどこかにリンクが欠けていると思う

settings = new ConnectionSettings(pool) 
       .DefaultIndex(defaultIndex) 
       .MapDefaultTypeNames(m => m.Add(typeof(Class1), "omg")) 
       .PrettyJson() 
       .DisableDirectStreaming(); 

      var descriptor = new CreateIndexDescriptor(defaultIndex) 
          .Mappings(ms => ms 
          .Map<Class1>(m => m 
          .Properties(ps => ps 
          .String(s=>s 
          .Name(n=>n.Ans) 
          .Analyzer("english"))))); 

{ 
    "mappings": { 
    "Class1": { 
     "properties": { 
     "Answer": { 
      "type": "string", 
      "analyzer": "english" 
     } 
     } 
    } 
    } 
} 

これは答えが私の感想です。コーディング中にエラーが表示されませんでしたが、出力は期待どおりではありません。 TIA

+0

のように見える私はそれが動作しているかどうかを確認するためにプラグインセンスでそれを試してみました。 ).MapDefaultTypeNames(m => m.Add(type1)、 "omg"))の後に '.MapPropertiesFor <>'を追加することで少し修正しようとしました。 名前をデフォルトにした後class1のものに加えて、それらのプロパティを与える必要があるので、.MapPropertiesのために試してみてください – ASN

+0

https://www.elastic.co/guide/en/elasticsearch/client/net-api/2.xを見てください/auto-map.html –

+0

おかげでラス。それを見て、答えに戻ってきます。 – ASN

答えて

1

CreateIndexDecriptor<T>

は、インデックスを作成するための記述子ですが、あなたはElasticsearchでインデックスを作成するために、IElasticClient.CreateIndex()メソッドに渡す必要があります。

void Main() 
{ 
    var defaultIndex = "default-index"; 
    var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); 

    var settings = new ConnectionSettings(pool, new InMemoryConnection()) 
      .DefaultIndex(defaultIndex) 
      .MapDefaultTypeNames(m => m.Add(typeof(Class1), "omg")) 
      .PrettyJson() 
      .DisableDirectStreaming(); 

    var client = new ElasticClient(settings); 

    client.CreateIndex("new-index", c => c 
     .Mappings(ms => ms 
      .Map<Class1>(m => m 
       .Properties(ps => ps 
        .String(s => s 
         .Name(n => n.Ans) 
         .Analyzer("english") 
        ) 
       ) 
      ) 
     ) 
    ); 
} 

public class Class1 
{ 
    public string Ans { get; set;} 
} 

Elasticsearchへの要求が

{ 
    "mappings": { 
    "omg": { 
     "properties": { 
     "ans": { 
      "type": "string", 
      "analyzer": "english" 
     } 
     } 
    } 
    } 
} 
関連する問題