2017-09-28 21 views
1

正しいクエリを作成するのに問題があります。Elasticsearch regexpクエリで結果が見つかりません

"ids" : { 
    "type" : "text", 
    "fields" : { 
    "keyword" : { 
     "type" : "keyword", 
     "ignore_above" : 256 
    } 
    } 
} 

サンプルコンテンツは、次のようになります:

10,20,30 

それはIDのリストだ私は、次のマッピングを持つフィールドを持つインデックス「ID」を持っています。今、私は複数の可能なIDを持つクエリを作りたいと私は論理和(OR)を作りたいので、私は正規表現を使用することにしました:

{ 
    "query" : { 
     "bool" : { 
      "must" : [ 
       { 
        "query_string" : { 
         "query" : "Test" 
        } 
       }, 
       { 
        "regexp" : { 
         "ids" : { 
          "value" : "10031|20|10038", 
          "boost" : 1 
         } 
        } 
       } 
      ] 
     } 
    }, 
    "size" : 10, 
    "from" : 0 
} 

クエリが成功したが何もありませんで実行されます。私は3つの結果を期待しました。

+0

文字列全体を一致させる必要があります。これらのコンマ区切りの値が単一の文字列だった場合、 '(10031 | 20 | 10038)(、(10031 | 20 | 10038))*'のようなものを使うことができますが、そうではありません。 –

答えて

1

10031または20または10038を取得する場合は、括弧を追加する必要があります。 "10031 | 20 | 10038" => "(10031 | 20 | 10038)"

関連する問題