2017-06-24 12 views
-1

elasticsearchノード内のすべてのドキュメントでいくつか(約50文字列)を検索したい、配列内の文字列にスペースと特殊文字が含まれています。複数の厳密な文字列のための弾性の効率的な検索クエリ

["listen to","two articles","some time"] 

のような文字列の

{"mid": 579820586177, 
"text": "If you read and listen to", 
} 
{"mid": 579820586178, 
"text": "two articles every day, your reading and", 
} 
{"mid": 579820586179, 
"text": "You can learn quickly and after some time you will not have", 
} 

配列私は以下のような弾性クエリを使用しますが、私は、応答

遅すぎるrecive:私は、弾性検索に格納されているすべての文書で提出されたテキストを、以下のようないくつかのことを持っています
"query_string": { 
    "query": "text:\"\%listen to\%\" OR text:\"\%two articles\%\" OR text:\"\%some time\%\"", 
    "analyze_wildcard": true 
} 

10Mドキュメントと約50ワードの効率的なクエリは何ですか?

答えて

0

私は何かを明らかに行方不明ですがない限り、あなたは次のようにワイルドカードクエリを使用することができます -

{ 
    "query": { 
    "bool": { 
     "should": [{ 
        "wildcard": { 
        "text": { 
         "value": "listen to" 
        } 
        } 
       }, 
       { 
        "wildcard": { 
        "text": { 
         "value": "two articles" 
        } 
        } 
       } 
     ], 
     "minimum_should_match":1 

     } 
    } 
} 
+0

それはすべての文書を返します使用してみてください – MOB

+0

しなければならない代わりに – tom

+0

私は仕事ではない、ということ試してみてください – MOB

0

ない私はあなたが修正していますが、あなたのワイルドカードを置く場所気付い理解していればフレーズ検索がビルドされているところ、これがあることを確認ために。テキストの中に2つの単語がある場合は、その順番にテキストに表示されますが、フレーズクエリはどこに行きますか。詳細は、使用方法とリンクの例を参照してください。

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "phrase": { 
      "text": "listen to" 
      } 
     }, 
     { 
      "phrase": { 
      "text": "two articles" 
      } 
     } 
     ] 
    } 
    } 
} 

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase.html