2017-09-17 21 views
1

complexIdというフィールドがあり、特殊文字:fruit/1a.445/2.10.mangoの値があるとします。だからComplex ID fruit/1a.445/2.10.mangoのようなものを検索すると、結果を得ることができます。Elasticsearchで検索クエリの単語を一致させる方法

私が欲しいのは、私が弾性検索はこれらの3つの単語のうち少なくとも一つを一致させたい、次のとおりです。

1. Complex 
2. ID 
3. fruit/1a.445/2.10.mango 

例えば: - :用

{ 
    "name": "Joe", 
    "complexId": "fruit/1a.445/2.10.mango" 
}, 
{ 
    "name": "Matt", 
    "complexId": "car/35.6a5/chevy.20" 
} 

ユーザー検索以下は、私の2つの文書でありますblah blah blah fruit/1a445/mango blah blahのようなものと、彼は以下の結果を取得する必要があります

{ 
    "name": "Matt", 
    "complexId": "fruit/1a.445/2.10.mango" 
} 

は、私はこれを試してみましたが、それはトンを失敗しますo結果を教えてください:

{ 
    "query": { 
     "bool": { 
      "match" : 
      { 
       complexId : "blah blah blah fruit/1a.445/2.10.mango blah blah" 
      } 
     } 
    } 
} 

フィールドcomplexIdには標準アナライザがあります。

ご協力いただければ幸いです。

答えて

1

あなたのケースでは、標準アナライザは動作しません。

特殊文字があるため、ElasticSearchに保存する際に無視されます。代わりにwhitespace Analyzerを使用してみてください。

POST _analyze 
{ 
    "analyzer": "whitespace", 
    "text": "blah blah blah fruit/1a.445/2.10.mango blah blah" 
} 

異なるアナライザで遊んで、ニーズに最も適したものを見つけます。

独自のカスタムアナライザも作成できます。

関連する問題