2013-12-07 36 views
5

インデックスがfield、値が1.flvのインデックスがあります。次のクエリを実行した場合:弾性検索クエリの完全一致

"query": { 
    "query_string": { 
     "query": "2.flv" 
    } 
} 

クエリでも1.flvですべてのレコードが返されます。

誰でも私に適切な解決策を教えてもらえますか?ここで

はサンプルデータが1.flvに返さある(あなたが見ることができるように、何も2.flvが含まれていません!)

"hits" : { 
    "total" : 8, 
    "max_score" : 0.625, 
    "hits" : [ { 
     "_index" : "videos", 
     "_type" : "comment", 
     "_id" : "_meta", 
     "_score" : 0.625, 
     "fields" : { 
     "video" : "1.flv", 
     "body" : "Really?" 
     } 
    }, { 
     "_index" : "videos", 
     "_type" : "comment", 
     "_id" : "0fYsYOTHT7O-7P6CVi7l3w", 
     "_score" : 0.625, 
     "fields" : { 
     "video" : "1.flv", 
     "body" : "fadsfasfas" 
     } 
    }, { 
     "_index" : "videos", 
     "_type" : "comment", 
     "_id" : "O9VjgFdmQra6hYxwMdGuTg", 
     "_score" : 0.48553526, 
     "fields" : { 
     "video" : "1.flv", 
     "body" : "Search is hard. Search should be easy." 
     } 
    }, { 
     "_index" : "videos", 
     "_type" : "comment", 
     "_id" : "A6k3FEKKSzKTSAVIT-4EbA", 
     "_score" : 0.48553526, 
     "fields" : { 
     "video" : "1.flv", 
     "body" : "Really?" 
     } 
    }, { 
     "_index" : "videos", 
     "_type" : "comment", 
     "_id" : "eFnnM4PrTSyW6wfxHWdE8A", 
     "_score" : 0.48553526, 
     "fields" : { 
     "video" : "1.flv", 
     "body" : "Hello!" 
     } 
    }, { 
     "_index" : "videos", 
     "_type" : "comment", 
     "_id" : "ZogAiyanQy6ddXA3o7tivg", 
     "_score" : 0.48553526, 
     "fields" : { 
     "video" : "1.flv", 
     "body" : "dcxvxc" 
     } 
    }, { 
     "_index" : "videos", 
     "_type" : "comment", 
     "_id" : "O0HcT7aGTrqKQxF25KsOwQ", 
     "_score" : 0.37158427, 
     "fields" : { 
     "video" : "1.flv", 
     "body" : "Hello!" 
     } 
    }, { 
     "_index" : "videos", 
     "_type" : "comment", 
     "_id" : "l2d53OFITb-etooWEAI0_w", 
     "_score" : 0.37158427, 
     "fields" : { 
     "video" : "1.flv", 
     "body" : "dasdas" 
     } 
    } ] 
    } 
} 
+0

マッピングと予想される結果を掲載できますか? – moliware

+0

また、アナライザー設定? – shyos

+0

@shyosどうすれば入手できるのか分かりません。 1.flv完全一致1.flvと2.flv完全一致2.flv(1.flvでない) – user2786037

答えて

6

あなたは何を見ている標準トークナイザ(デフォルトの一部の結果であります/標準アナライザ)を使用して、期間文字(.)をトークン化します。分析方法の簡単な例は、this playを参照してください。

マッピングを更新し、videoフィールドのアナライザーをたとえばkeywordアナライザーに変更するなど、複数のフィールドタイプを使用し、フィールドマッピングを次のように変更するなど、Elasticsearchで必要なものを達成するにはさまざまな方法があります。 index: not_analyzedなどですが、十分に機能する簡単な解決策は、AND演算子が使用されていることを確認することです。

default_operator:明示的な演算子が指定されていない場合に使用されるデフォルトのオペレータデフォルトで

は、query string queryOR演算子を使用しています。たとえば、デフォルト演算子がORの場合、ハンガリーのクエリ首都はORハンガリーの大文字ORに変換され、デフォルト演算子ANDでは同じクエリがANDハンガリーの大文字ANDに変換されます。デフォルト値はORです。

したがって、演算子で明示的に指定するか、デフォルトとして設定します。 This playは、両方のテクニック(右下ペインの検索#1と検索#2-タブ)も示しています。

+0

+1何らかの見落としがあるデフォルトの演算子 – Dror