2016-10-19 6 views
0

クエリ内でブール演算を使用してクエリを渡すことができる方法で、ElasticSearchとNESTでマルチスキャン検索を実行できますか?マルチマッチに渡されたすべての言葉は、デフォルトでORでリンクされているように見えます(これは他の演算子に変更することができます)。クエリでブール演算を使用してマルチスキャンElasticSearchを実行する

私は、ESからクエリからブール演算子を評価したいと思います。 "A & & B || C"と同じ複数のフィールドを検索します。

答えて

1

あなたはmulti_match queryのセマンティクスを変更するoperator to andを設定することができます。 NEST

void Main() 
{ 
    var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); 
    var connectionSettings = new ConnectionSettings(pool); 

    var client = new ElasticClient(connectionSettings); 

    client.Search<MyDocument>(s => s 
     .Query (q => q 
      .MultiMatch(m => m 
       .Fields(f => f 
        .Field(p => p.FirstProperty) 
        .Field(p => p.SecondProperty) 
       ) 
       .Query("this is the query") 
       .Operator(Operator.And) 
      ) 
     ) 
    ); 
} 

public class MyDocument 
{ 
    public string FirstProperty { get; set; } 

    public string SecondProperty { get; set; } 
} 

との例として次のクエリ

{ 
    "query": { 
    "multi_match": { 
     "query": "this is the query", 
     "operator": "and", 
     "fields": [ 
     "firstProperty", 
     "secondProperty" 
     ] 
    } 
    } 
} 

MultiMatch query usage docs for NESTを見て生成します。

関連する問題