es存储:

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
}
应该怎么做
golang es模糊查询和日期大于小于查询
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
阿里嘎多学长 2025-10-14 18:10关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
解决方案
ES模糊查询和日期大于小于查询可以使用以下方式实现:
模糊查询
使用
match或match_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查询,结合match和range查询实现综合查询。query := `{ "query": { "bool": { "must": [ { "match": { "name": "张" } }, { "range": { "createTime": { "gt": "2022-01-01" } } } ] } } }`以上是解决方案,希望有帮助!
解决 无用评论 打赏 举报