2017-04-18 49 views
0

フィールドに文字列を含む文字列を検索します。 SQLのような検索 私は正規表現を使用して検索しようとしました。大文字と小文字を区別しないで検索

$params["query"]["bool"]["filter"][]["regexp"][$item_key] = '.*'.$search_pattern.'.*' 

下位語のみ検索できます。上の単語については、動作していません。 例:

私のタイトルは次のとおりです。ABC

検索テキストがある場合:ABC - 検索テキストがない場合>

なりました:ABC -

私のマッピングの設定は>何の結果である:

`'mappings' => [ 
     'items' => [ 
      "title" => [ 
       "type" => "text", 
       "fields" => [ 
        "keyword" => [ 
         "type" => "keyword", 
        ] 
       ], 
       "fielddata" => true, 
       "index" => "not_analyzed", 
      ] 
     ] 
    ]` 

大文字と小文字を区別しない検索の考え方はありますか? ありがとうございます。

答えて

0

boolフィルタ内でプレフィックスクエリを使用しています。 Elasticsearchはフィルタのクエリを解析しません。 regexをクエリコンテキストに移動して、クエリ用語がインデックスアナライザによって分析されるようにすることができます。弾性的な服飾品を索引付けして検索する際に用語が同じであることを確認するために、同じ分析器が検索中にある。

あなたは、これはあなたが言ったように私はマッピングの設定を変更しようとしました

+0

役立ちますstandardアナライザ

{ "mappings": { "items": { "properties": { "title": { "type": "text", "fields": { "keyword": { "type": "keyword" } }, "fielddata": true, "analyzer": "standard" } } } } } 

クエリ

{ "query": { "regexp":{ "title": "ab.*" } } } 

希望を適用することができます。しかし、私はこのエラーを受け取りました: {"エラー":{"root_cause":[{"タイプ": "illegal_argument_exception"、 "理由": "[タイトル]のマッパーは他のタイプのappingである既存のm と競合します。 [タイトル]が異なる[アナライザー]] "}]、"タイプ ":" illegal_argument_exception "、"理由 ":" [タイトル]のマッパーは他のタイプの既存のマッピングと競合します:\ n [マッパー[タイトル] [アナライザ]] "}、" st atus ":400} – ToujouAya

+0

私が上記のように。私はいくつかの機能を使用したい** SQLのような** **と似ています。分野における セイサンプルデータ:神経ナイチンゲールqrBGHaSdMe 検索 タイトル:Neeraj - なし結果 タイトル:neeraj - タイトルなります: - : - – ToujouAya

+0

errrorはあなたが適用言おうとしている結果を取得eraj タイトルを結果として得ますねこれらのマッピングは同じインデックス上にあるので、新しいインデックスを作成するのはなぜですか? – user3775217

関連する問題