2012-03-13 8 views
5

A、のは、 "ABのCd"は、文字列を持っているどのように複数のフィールドに検索したり、文のElasticSearch

を言わせて、私はフィールドを持つ文書を持っていますd '、...' z '](すべてのドキュメントにすべてのフィールドがあるわけではありません)

フィールド' a '、' c '、' f '、' x 'のみで検索します。文書内にある。

フィールド 'a'、 'c'、 'f'、 'x'のいずれかに 'Ab'または 'Cd'で始まる文字列が含まれていると、成功します。

私はこれを使用しますが、選択されていないすべてのフィールドを検索します。また

{ 
    "query": { 
     "query_string" : { 
      "fields" : ["a", "c", "f", "x"], 
      "query" : "Ab* Cd*" 
     } 
    } 
} 

が、あなたはフィールドの名前ですべての用語を前に付けることができます:

{'query': {'query_string': {'query': "Ab* Cd*"}}} 

答えて

14

それはあなたのクエリの一部としてデフォルトで検索したいフィールドのリストを指定することが可能です

{'query': {'query_string': {'query': "a:Ab* c:Ab* f:Ab* x:Ab* a:Cd* c:Cd* f:Cd* x:Cd*"}}} 

チェックQuery String Query elasticsearchのページこれらおよびその他の便利なオプションについては、ガイドをご覧ください。

+0

ありがとう、これは問題を解決します。 –

4

これは私が探していたものです。こののJavaバージョンを探している場合、誰に:あなたは、フィールドのためのショーとして必要な場合

QueryStringQueryBuilder qsqb = new QueryStringQueryBuilder("Ab* Cd*") 
      .field("a", 2) 
      .field("b") 
      .field("c") 
      .field("f") 
      .field("x"); 

あなたも後押し「」上記のコードでのフィールドレベルを使用することができます。

関連する問題