亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在java elasticsearch中獲取價格范圍在最小值和最大值之間的數據

在java elasticsearch中獲取價格范圍在最小值和最大值之間的數據

狐的傳說 2021-06-21 09:25:11
我是彈性搜索的新手,到目前為止我正在閱讀文檔,它很好,但我無法編寫按范圍獲取的方法,下面是一種按 ID 獲取的方法,它運行良好,但我如何才能做到這一點以獲得與價格范圍匹配的數據列表。 public Map<String, Object> getTourById(String id){        GetRequest getRequest = new GetRequest(INDEXTOUR, TYPETOUR, id);        GetResponse getResponse = null;        try {            getResponse = restHighLevelClient.get(getRequest);        } catch (java.io.IOException e){            e.printStackTrace();            e.getLocalizedMessage();        }        Map<String, Object> sourceAsMap = getResponse.getSourceAsMap();        return sourceAsMap;    }上面的方法現在工作正常下面是按范圍獲取并返回與價格匹配的數據的方法 public Map<String, Object> getTourByPriceRange(int minPrice, int maxPrice) {        GetRequest getRequest = new GetRequest(INDEXTOUR, TYPETOUR, "requires an ID");        QueryBuilder qb = QueryBuilders                .rangeQuery("price")                .from(minPrice)                .to(maxPrice)                .includeLower(true)                .includeUpper(true);        GetResponse getResponse = null;        try {            getResponse = restHighLevelClient.get(getRequest);        } catch (java.io.IOException e) {            e.printStackTrace();            e.getLocalizedMessage();        }        Map<String, Object> sourceAsMap = getResponse.getSourceAsMap();        return sourceAsMap;    }在上述方法中,只有查詢構建器是準確的,我想得到的結果是一組價格落在給定范圍內的數據。{    "departure": {      "city": "\u0438\u043d\u0441\u043a",      "date": "2018-08-10"    },    "extras": [],    "hotel": {      "beach": {        "distance": 0,        "type": "\u041f\u0435\u0447\u0430\u043d\u044b\u0439"      },      "country": "\u0413\u0440\u0446\u0438\u044f",      "distanceToAirport": 0,      "facilities": [        "Standard Without Balcony"      ],
查看完整描述

1 回答

?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

到目前為止做得很好??!為了發出搜索請求,您需要使用SearchRequest而不是GetRequest通過 ID 檢索單個文檔。


QueryBuilder qb = QueryBuilders

            .rangeQuery("price")

            .from(minPrice)

            .to(maxPrice)

            .includeLower(true)

            .includeUpper(true);


    SearchRequest searchRequest = new SearchRequest(INDEXTOUR); 

    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 

    searchSourceBuilder.query(qb); 

    searchRequest.types(TYPETOUR);

    searchRequest.source(searchSourceBuilder); 


    SearchResponse searchResponse = null;

    try {

        searchResponse = restHighLevelClient.search(searchRequest);

    } catch (java.io.IOException e) {

        e.printStackTrace();

        e.getLocalizedMessage();

    }


查看完整回答
反對 回復 2021-06-23
  • 1 回答
  • 0 關注
  • 369 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號