2017-03-01 7 views
0

弾性検索DBに6レコードを挿入した後、弾性検索の例を試しています。弾性検索一致のクエリが不正確な結果とスコアを返します

私は間違った結果を取得し、

間違った順序でい

SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(
       matchQuery("title","Car Damaged")) 
       .build(); 

     FacetedPage<Occurrence> occurrences = myElasticSearchRepository.search(searchQuery); 
     return occurrences; 

以下のように挿入されたレコードは、私が検索を二つのプロパティIDとテキスト

"OCC-001","Car Damaged During Loading" 
"OCC-002","Car jango jango jango Damaged Loading" 
"OCC-003","hjjkhjkasd hjkhjklhas d Cars asdasd jango asdsas jango jango Damaged asdsad asdasdasd Loading" 
"OCC-004","This should not come at all " 
"OCC-005","This may come Car" 
"OCC-006","Will this come Cars" 

を持つ単純なJSONやっています

"OCC-005","This may come Car" 
"OCC-001","Car Damaged During Loading" 
"OCC-002","Car jango jango jango Damaged Loading" 

以下のクエリを使用して同じ検索を行うと、正しい結果が得られますが、私は基本的に間違った洞何か午前のように異なるため

http://localhost:9200/myIndex/cars/_search?q=Car%20Damaged

"OCC-001","Car Damaged During Loading" 
"OCC-002","Car jango jango jango Damaged Loading" 
"OCC-005","This may come Car" 
"OCC-003","hjjkhjkasd hjkhjklhas d Cars asdasd jango asdsas jango jango Damaged asdsad asdasdasd Loading" 

でが見えます。

よろしくお願いします。

答えて

0

この例では、埋め込み弾性検索を使用していました。 しばらくの間デバッグした後、インデックスを削除して再作成しようとしました。

http://localhost:9200/_cat/indices?vを使用してインデックスを監視できます。 キャッシュのクリア、インデックスの更新など、すべての主要機能の弾性検索のチートシートがあります。

おそらくインデックスが破損しています。私は古いインデックスを削除し、別の名前でインデックスを再作成し、期待通りに機能しました。

検索結果は関連性があり、スコアは予想された結果と一致しています。

1

あなたがElasticsearchを初めてお使いの場合は、URI検索の代わりにBody Request Searchを試してみることをおすすめします。それはhereです。クエリツールが必要な場合は、Senseを試すことができます。

1年前にspringデータelasticsearchがElasticsearchバージョンと一致するように更新バージョンがかなり遅いため、hereと問題が発生したため、JavaクライアントライブラリはElasticsearch hereと対話します。

0

複数のシャードと少量のデータがある場合、デフォルトの検索タイプ(query_then_fetch)を使用すると誤ったスコアを取得する可能性があります。少量のデータが複数のシャードに分散してIDFアルゴリズムが悪い結果。 このシナリオでは、おそらくdfs_query_then_fetchという別の検索タイプを探しています。 それが重要である理由と、ここでhttps://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-search-type.html#search-request-search-type

を見つけることができる検索の種類については、この

SearchQuery searchQuery = new NativeSearchQueryBuilder() 
            .withQuery(matchQuery("title","Car Damaged"))          
            .withSearchType(SearchType.DFS_QUERY_THEN_FETCH) 
            .build(); 

追加情報ようなものになるだろう

関連する問題