2017-12-12 8 views
0

と組み合わせた場合rangequeryフィルタが失敗した私は、日付の間でデータをフィルタリングするNativeSearchQueryBuilderを使用しながら、multiMatchQuery

Calendar compareDate = Calendar.getInstance(); 
compareDate.add(Calendar.DATE, 14); 
SearchQuery query = new NativeSearchQueryBuilder().withIndices("project") 
       .withPageable(new PageRequest(offset, limit)) 
       .withFilter(rangeQuery("startDate").from(new Date().getTime()).to(compareDate.getTime())) 
       .withFilter(multiMatchQuery(string, 
         new String[] { "name","platform", "department", "url"}).build(); 
を文字列とrangequeryを検索するmultiMatchQueryを使用してデータを取得したいここで私はElasticSearchに照会しようとしていますHI

日付フィルタクエリが失敗し、古い日付のデータが表示されます。私はまだ古い日付を持っているbooleanQueryBuilderを使用してみました。 multiMatchQueryを使わずにrangeQueryフィルターを使用すると、正しいデータが得られます。なぜこの組み合わせがうまくいかないのでしょうか? springdataを使用して回避する方法はありますか?

私の文書は、あなたが悪いという名前で、基本的にpost_filterですwithQuery()代わりのwithFilter()を使用する必要があり、この

{ 
     "categories": [ 
      { 
       "id": "ee625703-6103-6f94-b246-ff00003e0ef8", 
       "name": "Networking" 
      } 
     ], 
     "id": "PROJECT_69ee95dcb88547e388491328bbb6fdcc", 
     "hostContentId": "69ee95dc-b885-47e3-8849-1328bbb6fdcc", 
     "orgName": "Parinati Solutions", 
     "title": "Parinati Solutions: Kansas City", 
     "summary": "Parinati Solutions this is a test project name...", 
     "categoryUrls": "networking", 
     "startDate": 1512572400000, 
     "endDate": 1512576000000, 
     "friendlyDates": "Dec 6 @ 9:00 am - 10:00 am", 
     "friendlyLocation": "Test local Foundation, Kansas City, MO", 
     "providerSearchId": "9b89acbc-2d03-4526-860c-2a71f891be4b", 
     "contentProvider": "sourcelink", 
     "contentType": "PROJECT", 
     "linkedinProfileUrl": null, 
     "allowMemberContact": null, 
     "firstName": null, 
     "lastName": null, 
     "expertise": null, 
     "twitterHandle": null, 
     "interests": null, 
     "tagLine": null, 
     "searchResultId": "9b89acbc-2d03-4526-860c-2a71f891be4b" 
    } 

答えて

1

のようになります。

あなたはブールクエリ内のクエリの両方を結合する必要があります。

withQuery(
    boolQuery() 
     .must(multiMatchQuery(string, new String[] { "name","platform", "department", "url"})) 
     .filter(rangeQuery("startDate").from(new Date().getTime()).to(compareDate.getTime())) 
) 
+0

SEARCHQUERYクエリ=新しいNativeSearchQueryBuilder()withIndices( "プロジェクト") \t \t \t \t .withPageable(新PageRequest(オフセットリミット)) \t .withQuery(QueryBuilders.boolQuery()。なければならない(multiMatchQuery(文字列、新しいString [] { "名前"、 "プラットフォーム"、 "部署"、 "URL"})) \t \t \t \t .filter (rangeQuery( "startDate")。from(新しいDate()。getTime())。to((compareDate.getTime()。getTime())))。 – Suyash

+0

私は上記を試しました。しかし、結果が返ってこなかった – Suyash

+0

生成されたクエリを取得して、それがどのように見えるかを確認できますか?ドキュメントが返されない場合は、結果に期待するドキュメントを表示して、必要なものを修正します。 – Val

関連する問題