我尝试使用github.com/olivere/elastic在elasticsearch上搜索文档,但无法创建查询...
我需要结果...
{
"query": {
"bool": {
"must": [
{
"match": {
"recipient_id": 111
}
}
]
}
}
}
但在密码里...
x一个一个一个一个x一个一个二个x
结果
{
"bool": {
"must": {
"match": {
"recipient_id": {
"query": 11
}
}
}
}
}
你要离开这个...拜托你能帮帮我吗?
下面是我执行查询的代码
func Search() {
client, err := GetClient()
if err != nil { panic(err) }
boolQuery := elastic.NewBoolQuery()
mustQueries := make([]elastic.Query, 0)
mustQueries = append(mustQueries, elastic.NewMatchQuery("recipient_id", 111))
boolQuery.Must(mustQueries...)
searchResult, err := client.Search().
Index(NameIndex).
Type("_search").
Query(boolQuery).
Do(context.Background())
fmt.Println(searchResult)
fmt.Println(searchResult)
}
1条答案
按热度按时间lnxxn5zx1#
我从你的帖子中解读了两个问题
1.为什么查询必须包含对象项而不是数组项?
1.为什么匹配查询的格式不同?
在下面的代码段中,您只在must查询中放置了一个匹配查询。
因此match元素包含一个对象项,如下所示
如果你在must查询中再放置一个match查询,你将得到一个数组项。下面的代码片段产生了一个带有数组项的match元素。
上面的代码片段产生以下查询
NewMatchQuery(...,...)API生成全文匹配查询。
而不是下一个。
最后,查询您所期望的内容和查询代码生成的内容将获取相同的结果。
顺便说一句:你的帖子给了我一个解决问题的提示,最后给了你问题的答案。谢谢。