showliuzp 2025-10-14 18:10 采纳率: 84.3%
浏览 3
已结题

golang es模糊查询和日期大于小于查询

es存储:

![img](https://i-blog.csdnimg.cn/ask/36174773bc954db68950a368b693afd7.png "#left")


   list_res, err := types.EsClient.Search().Index(types.ES_OPERATOR_INDEX).
        Sort("dates.keyword",false).
        From(skip).
        Size((*req).PageSize).
        Pretty(true).
        Do(ctx)
 
 
我想增加两个查询,一个是根据operator字段进行模糊查询,二是增加日期区间查询

//要做成模糊查询
var query elastic.Query
//需要查询的字段:operator
if operator != ""{ //这应该是精确查询
    query = elastic.NewBoolQuery().Filter(elastic.NewTermQuery("operator.keyword", (*req).Operator))
}

二:日期区间
//需要查询的字段:dates,字符串类型
  if start_date != "" and end_date != ""{
dates >= start_date  and dates <= end_date
 }

应该怎么做

 

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-10-14 18:10
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    ES模糊查询和日期大于小于查询可以使用以下方式实现:

    模糊查询

    使用 matchmatch_phrase 查询,可以实现模糊查询。

    // match 查询
    query := `{
      "query": {
        "match": {
          "name": "张"
        }
      }
    }`
    
    // match_phrase 查询
    query := `{
      "query": {
        "match_phrase": {
          "name": "张三"
        }
      }
    }`
    

    日期大于小于查询

    使用 range 查询,可以实现日期大于小于查询。

    // 日期大于查询
    query := `{
      "query": {
        "range": {
          "createTime": {
            "gt": "2022-01-01"
          }
        }
      }
    }`
    
    // 日期小于查询
    query := `{
      "query": {
        "range": {
          "createTime": {
            "lt": "2022-01-01"
          }
        }
      }
    }`
    
    // 日期大于等于小于等于查询
    query := `{
      "query": {
        "range": {
          "createTime": {
            "gte": "2022-01-01",
            "lte": "2022-01-31"
          }
        }
      }
    }`
    

    综合查询

    可以使用 bool 查询,结合 matchrange 查询实现综合查询。

    query := `{
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "name": "张"
              }
            },
            {
              "range": {
                "createTime": {
                  "gt": "2022-01-01"
                }
              }
            }
          ]
        }
      }
    }`
    

    以上是解决方案,希望有帮助!

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月14日
  • 创建了问题 10月14日