elasticSearch之查询


"you know, for search“”,这是es的口号,所以es最核心的功能就是查询,es中查询简单来说有两种:

1.子条件查询:即特定字段查询所指特定值。子条件查询又分为query context和filter  content

    query content:在查询过程中,除了判断文档是否满足条件外,还会计算一个_score来标识匹配的程度,旨在判断目标文档和查询条件匹配的有多好

          query content又包括全文本查询(针对文本类型数据)和字段级别的查询(针对结构化数据,如数字,日期)

以下为全文本查询:

模糊匹配:结果会返回包含“ElasticSearch”,"入门",“ElasticSearch入门”这三个关键词的信息

{
     “query”:{
         "match":{
                  "title":"ElasticSearch入门"
            }          
    } 
}

 但是如果我只想查询包含“elasticSearch入门”这个关键词的信息,就用到习语查询

{
     “query”:{
         "match_phrase":{
                  "title":"ElasticSearch入门"
            }          
    } 
}

  多个字段的查询:会查询出author和title中包含elasticSearch的信息

{
     “query”:{
         "multi_match":{
                  "query":"elasticSearch"
                  "fields":["author","title"]
            }          
    } 
}    

 语法查询:查询条件遵循某种语法,如下返回包含“elasticSearch”和”入门”或者包含“python”的内容

{
     “query”:{
         "query_string":{
                 "query":"(elasticSearch AND 入门) OR python"
        }         
    } 
}    

  以下为字段查询:

      查询作者是张三的书籍

{
     “query”:{
         "term":{
                  "author":"张三"
            }          
    } 
}

  查询word_count字段在1000到2000的书籍

 

{
     “query”:{
         "range":{
              "word_count":{
                    "gte":1000,
                    "lte":2000
                      }
            }          
    } 
} 

  

 filter content:在查询过程中,只判断改文档是否满足条件,只有Yes或者No,es会对filter查询结果做缓存,所以更快些

      以下返回“word_count”为1000的书籍

  

{
     “query”:{
         "bool":{
              "filter":{
                    "term":{
                              "word_count":1000    
                         }
                      }
            }          
    } 
} 

  

   

原文地址:https://www.cnblogs.com/team42/p/8342274.html