2017-09-28 17 views
0

私の質問は簡単です。私は郵便配達員に非常に素晴らしい質問を書くことができます。C#でNest Elasticsearchを使用してクエリを作成するにはどうすればよいですか?

POST:localhostを:?9200/logstash-2017年8月28日/ _searchかわいい=真

{ 
 
\t "query":{ 
 
\t \t "match":{ 
 
\t \t \t 
 
\t \t \t "level":"Error" 
 
\t \t } 
 
\t } 
 
\t 
 
}

しかし、私は巣を使用してC#コードの内部でこの事を持っているframework.But私はあなたが私を助けることができないのですか?

var response = EsClient().Search<DocumentAttributes>(s => s 
 
       .Index("logstash-2017.09.18") 
 
       .Type("json") 
 
       .Query(q => q 
 
       .Term(p => p.level, "Error"))); 
 

 
      //.Query(q => q.Raw(@"level:Error"))); 
 
      //  .Type("type").Query(q => q.Raw(@"{""match_all"":{}}")));

どのように私は、クエリを書き込むことによって、またはフィールドを使用して書き留めることができますか?

答えて

2

あなたの質問は同じではありません。 jsonクエリの場合、次のパスlocalhost:9200/logstash-2017.08.28/_search?pretty=trueを指定しました。つまり、インデックスlogstash-2017.08.28のすべてのドキュメントを検索します。

NESTを使用してクエリに書いた内容を確認できます。

  1. Indexメソッドは、指定されたインデックス内のすべてのドキュメントを検索しようとしている
  2. Typeメソッドは、指定された型を持って指定されたインデックス内のすべての文書を照会しようとしていることを意味していることを意味します。あなたのケースでは、タイプはjsonです。したがって、Typeメソッドは、どのタイプの文書を検索するかを定義するためのメソッドです。

だから、あなたのクエリの違いは、最初のケースでは、索引のすべての文書を照会していることであるが、後者の場合には、あなたはタイプjsonとインデックス内のすべての文書を照会しています。

+0

質問の間違った部分に焦点を当てないでください。次のように使用できます:localhost:9200/logstash-2017.08.28/json/_search – programmerist

+0

文書名は 'json'ですか? –

+0

あなたはライトです。 yes correct :) – programmerist

関連する問題