How can I put a format specifier in Elasticsearch query using Go?

huangapple go评论90阅读模式
英文:

How can I put a format specifier in Elasticsearch query using Go?

问题

在下面的代码中,我想要像一些格式说明符%d一样放置一个变量id。如何在以下使用Golang的elasticsearch查询中实现这一点?

str := `{
		"query": {
		  "match": {
			"id": 123
		  }
		}
	  }`
	
s := []byte(str)
url := "http://localhost:9200/student/_delete_by_query"

_, err = helper.GoDelete(url, s)
if err != nil {
	return err
}
return nil

请将id变量的值作为格式说明符的一部分插入到查询字符串中。

英文:

In the following code, I want to put a variable id, like some format specifier %d. How do I do this for the following elasticsearch query with Golang?

str := `{
		"query": {
		  "match": {
			"id": 123
		  }
		}
	  }`
	
s := []byte(str)
url := "http://localhost:9200/student/_delete_by_query"

_, err = helper.GoDelete(url, s)
if err != nil {
	return err
}
return nil

答案1

得分: 1

使用fmt.Sprintf可能是最简单的方法,但不是最快的方法。但是最简单。

d := 123
id := fmt.Sprintf(`{"query": {"match": {"id": %d}}}`, d)

使用fmt.Sprintf函数可以将变量 d 的值格式化为字符串,并插入到 JSON 字符串中的相应位置。在这个例子中,d 的值被插入到 id 字段的值中。注意,JSON 字符串中的引号需要使用转义字符 \ 进行转义。

英文:

Using fmt.Sprintf may be the simplest way to do that, not the fastest. but simplest.

d := 123
id := fmt.Sprintf(`{"query": {"match": {"id": %d}}}`, d)

答案2

得分: 0

fmt.Sprintf可以工作,但也容易出错。我会创建适当的结构,然后使用json.Marshal来完成:

type (
	Match struct {
		ID int `json:"id"`
	}
	Query struct {
		Match Match `json:"match"`
	}
	MyStruct struct {
		Query Query `json:"query"`
	}
)

func main() {
	s := MyStruct{
		Query: Query{
			Match: Match{
				ID: 123,
			},
		},
	}
	bytes, err := json.Marshal(s)
}
英文:

fmt.Sprintf could work, but is also prone to errors. I would create the appropriate structures, then use json.Marshal to do it:

type (
	Match struct {
		ID int `json:"id"`
	}
	Query struct {
		Match Match `json:"match"`
	}
	MyStruct struct {
		Query Query `json:"query"`
	}
)

func main() {
	s := MyStruct{
		Query: Query{
			Match: Match{
				ID: 123,
			},
		},
	}
	bytes, err := json.Marshal(s)
}

huangapple
  • 本文由 发表于 2021年8月16日 18:28:41
  • 转载请务必保留本文链接:https://go.coder-hub.com/68801261.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定