showliuzp 2025-10-14 19:39 采纳率: 84.3%
浏览 2
已结题

golang es查询报错

//ws存储的数据结构
![img](https://i-blog.csdnimg.cn/ask/c7ee183ae8534c55be00c2e709bd958e.png "#left")

es查询:
   skip := (req.Page - 1) * req.PageSize

    //var query elastic.Query
    boolQuery := elastic.NewBoolQuery()

    if (*req).Operator != "" {
        //query = elastic.NewBoolQuery().Filter(elastic.NewTermQuery("operator.keyword", (*req).Operator))
    }

    if (*req).StartDate != 0 && (*req).EndDate != 0 {
        start_date := tools.FormatDates(types.DATE_NORMAL_FORMAT, (*req).StartDate)
        end_date := tools.FormatDates(types.DATE_NORMAL_FORMAT, (*req).EndDate)

        // 创建 range 查询
        rangeQuery := elastic.NewRangeQuery("dates:keyword").Gte(start_date).Lte(end_date)
        boolQuery = boolQuery.Filter(rangeQuery)
    }

    if boolQuery == nil {
        boolQuery = elastic.NewBoolQuery().Must(elastic.NewMatchAllQuery())
    }

    list_res, err := types.EsClient.Search().
    Index(types.ES_OPERATOR_INDEX).
    Query(boolQuery).
    Sort("dates.keyword", false).
    From(skip).
    Size(req.PageSize).
    Pretty(true).
    Do(ctx)

//在执行查询的时候,query查询报错:
elastic: Error 400 (Bad Request): [1:71] [bool] failed to parse field [filter] [type=x_content_parse_exception]
,其中dates为字符串类型的,start_date,end_date转换为都为:yyyy-mm-dd H:i:s
  • 写回答

5条回答 默认 最新

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

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

    问题分析

    你遇到的问题是关于使用 Go 语言与 Elasticsearch 进行查询时报错。根据你提供的信息,似乎是关于数据结构和 Elasticsearch 查询语法的问题。

    解决方案

    1. 检查数据结构: 确保你的数据结构与 Elasticsearch 的索引结构匹配。特别是检查字段名和类型是否正确。
    2. 检查查询语法: 确保你的查询语法正确,包括索引名、类型、字段名等。
    3. 检查连接配置: 确保你的 Go 语言程序与 Elasticsearch 的连接配置正确,包括 host、port、username、password 等。

    核心代码

    package main
    
    import (
    	"context"
    	"fmt"
    	"log"
    
    	"github.com/elastic/go-elasticsearch/v7"
    )
    
    func main() {
    	// Elasticsearch 配置
    	esConfig := elasticsearch.Config{
    		Addresses: []string{"http://localhost:9200"},
    	}
    
    	// 创建 Elasticsearch 客户端
    	esClient, err := elasticsearch.NewClient(esConfig)
    	if err != nil {
    		log.Fatal(err)
    	}
    
    	// 构建查询语法
    	query := `{
    		"query": {
    			"match": {
    				"field_name": "field_value"
    			}
    		}
    	}`
    
    	// 执行 Elasticsearch 查询
    	res, err := esClient.Search(context.Background(), es.Search.WithQuery(query))
    	if err != nil {
    		log.Fatal(err)
    	}
    
    	// 处理查询结果
    	for _, hit := range res.Hits.Hits {
    		fmt.Println(hit.Source)
    	}
    }
    

    注意

    上述代码仅供参考,具体的解决方案需要根据你的实际情况进行调整。

    评论

报告相同问题?

问题事件

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