ElasticsearchRepository 使用記錄


前提:項目采用spring-data-elasticsearch 3.2.0

一、QueryBuilder 使用記錄

(1)fuzzyQuery
功能:模糊匹配
原理: fuzzy搜索技術,搜索的時候,可能輸入的搜索文本會出現誤拼寫的情況自動將拼寫錯誤的搜索文本,進行糾正,糾正以后去嘗試匹配索引中的數據糾正在一定的范圍內如果差別大無法搜索出來

Java:

xxxRepository.search(QueryBuilders.fuzzyQuery("name", "張三"))

ES寫法:

GET /my_index/my_type/_search 
{
  "query": {
    "fuzzy": {
      "text": {
        "value": "surprize",
        "fuzziness": 2 // fuzziness 即為最多糾正兩個字母然后去匹配,默認為 auto(2)
      }
    }
  }
}

(2)matchQuery

 

功能:根據分詞進行匹配

Java:

MatchQueryBuilder matchQuery = QueryBuilders.matchQuery("name", archiveListFilterDTO.getPersonName());
xxxRepository.search(matchQuery);

ES寫法:

GET my_index/my_type/_search  
{  
  "query": {  
    "match": {  
      "xxx": "Quick Foxes!"    
    }  
  }  
} 

(3)termQuery

功能:精確查詢 完全匹配

Java:

 TermQueryBuilder termQuery = QueryBuilders.termQuery("cid",archiveListFilterDTO.getPersonCid());
 xxxRepository.search(termQuery);

ES寫法:

GET my_index/_search
{
  "query": {
    "term" : {
      "cid" : {
        "value" : "5137376667422s31000000"
      }
    }
  }
}

(4)rangeQuery

功能:范圍查詢

Java:

RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("dt")
                    .gte(dateFormat.parse(snapMapDTO.getStartTime()).getTime())
                    .lte(dateFormat.parse(snapMapDTO.getEndTime()).getTime());
xxxRepository.search(rangeQueryBuilder);

ES寫法:

GET my_index/_search
{
  "query": {
    "range" : {
      "personFileCreateTime" : {
        "from" : 1572331788000,
        "to" : 1572331789000,
        "include_lower" : true,
        "include_upper" : true
      }
    }
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM