英文:
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)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论