elasticsearch query 要点

时间:2025-02-27 07:42:03
//查看分析效果
godproduct/_analyze?analyzer=ik_smart&text=雅诗兰黛眼霜

//简单filter查询
//POST  _myindex/_mytype/_search?
{
  "query": { 
    "bool": { 
      "filter":  
        { "term":  { "user": 600343296 }}
    }
  }
}

//简单term查询
{
  "query": { 
    "term": { "user": 600343296  }
  }
}

//简答match查询
{
  "query": { 
    "match": { "title": "资生堂悦薇"  }
  }
}


//复合bool查询:must + must_not
{
    "query":{
        "bool":{
             "must": [
                        { "match_phrase": { "title": "城野医生" }}, 
                        { "term": { "recv": "Nancy" }}  ,
                        { "term": {"phone": "18700139301"}},
                        { "term": {"user": 600343296 }},
                        {"range": {"addTm":
                                {"gte":"2022-03-03 11:45:56" ,
                                  "lte":"2022-03-04 11:45:56"   
                                }}}
                    ],
              "must_not":
                   {"term":{ "currency": "USD"}}
                
                }
            }
}

//match and filter 
{
  "query": { 
    "bool": { 
      "must": [
        { "match": { "title":   "城野医生"        }}, 
        { "match": { "recv": "Nancy" }}  
      ],
      "filter": [ 
        { "term":  { "user": 600343296 }}, 
        { "range": { "addTm": {"gte":"2022-03-03 11:45:56" }}} 
      ]
    }
  }
}

//按ids检查查询
tradequery/order/_mget?
{
    "ids": ["63398422908","63398422908"]
}

//---------------------------------
{
  "query": {
    "constant_score": {
      "filter": {
        "range": {
          "addTm": {
            "gte":"2022-03-03 11:45:56" ,
            "lte":"2022-03-04 11:45:56"   
          }
        }
      },
       "boost": 1.2
    }
  }
}



//嵌套处查询
// productID ="SD1002136" OR (productID = "SD4535233" AND price = 30)
{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "should": [
            { "term": {
              "productID": "SD1002136"
            }},
            {
              "bool": {
                "must": [
                  { "term": {
                    "productID": "SD4535233"
                  }},
                  {
                    "term": {
                      "price": "30"
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }
  }
}


//get查询模式
tradequery/order/_search?q=id:63405293296
  • term 查询keyword字段:

        term不会分词。而keyword字段也不分词。需要完全匹配才可。

  • term查询text字段:

          因为text字段会分词,而term不分词,所以term查询的条件必须是text字段分词后的某一个。

  • match查询keyword字段:

        match会被分词,而keyword不会被分词,match的需要跟keyword的完全匹配可以。

  • match查询text字段:

        match分词,text也分词,只要match的分词结果和text的分词结果有相同的就匹配。

  • match_phrase匹配keyword字段。

        match_phrase会被分词,而keyword不会被分词,match_phrase的需要跟keyword的完全匹配才可以。

  • match_phrase匹配text字段。

        match_phrase是分词的,text也是分词的。match_phrase的分词结果必须在text字段分词中都包含,而且顺序必须相同,而且必须都是连续的。

  • query_string查询keyword类型的字段,无法查询。
  • query_string查询text类型的字段。

    和match_phrase区别的是,query_string查询text类型字段,不需要连续,顺序还可以调换。