高级查询query

子条查询 特定字段查询所有特定值
子条件查询(Query context Filter context)两种查询方式
1)Query context:
在查询过程中,除了判断文档是否满足查询条件之外,es还会计算一个_score来标识匹配的程度,旨在判断目标文档和查询条件匹配的有多好(吻合度)。
常用查询:
全文本查询 针对文本类型数据
字段级别查询 针对结构化数据,如数字,日期等
1.全文本查询:

127.0.0.1/book/_search

    { 
     "query"{  //关键词
         "match":{ //模糊查询关键词
        "author":"瓦力"
        }
         }
      }
      模糊查询问题(不精确)
    match_phrase  //短语句匹配(完全匹配)

    { 
     "query"{  //关键词
         "match_phrose":{ //模糊查询关键词
        "author":"瓦力"
        }
         }
      }

完全匹配可能比较严,我们会希望有个可调节因子,少匹配一个也满足,那就需要使用到slop。

{
      "query": {
        "match_phrase": {
        "content" : {
            "author" : "我的宝马多少马力",
            "slop" : 1
        }
        }
      }
    }

多个匹配查询(multi_match)

{
      "query": {
        "multi_match": {
        "query" : "我的宝马多少马力",  //query信息,要查询的数据,比如要查询(我的宝马多少马力)
        "fields" : ["title", "content"] //指定查询的字段,关系为或
        }
      }
    }

语法查询(query_string)

{
     "query_string":{
        "query": "aaaa"//指定的查询内容关键词
      }
     }

 查询多个数据

{
     "query_string":{
        "query": "(aaaa) OR python"//指定的查询内容关键词,查询aaa或者python的关键词
      }
     }

查询多个字段

 {
     "query_string":{
        "query": "aaaa OR python"//指定的查询内容关键词,查询aaa或者python的关键词
        "field":["title","author"]//指定查询的字段
      }
     }

2.结构化的查询:

{
      "query":{
         "term":{//关键词,具体象
           "word_count":1000   //例如字段字数在某个特定值的数值
           
          }
       }
     }

 范围查询:

{
      "query":{
         "range":{//关键词,范围
           "word_count":1000   //指定例如字段word_count字数在某个范围的数值
           "get":1000 //大于等于1000 ge 等于
           "lte":2000 //小于等于2000 如时间,2000改为now这个关键词
          }
       }
     } 

条件查询   以一定的逻辑组和子条件查询

posted @ 2017-12-22 19:58  开始战斗  阅读(898)  评论(0编辑  收藏  举报