我正在使用olivere的Elasticsearch库进行Go - https://github.com/olivere/elastic
我无法正确构建搜索查询,它会一直返回0次点击。
termQuery := elasticClient.NewTermQuery("hash", "hashedID")
fmt.Println(termQuery)
searchResult, err := qs.client.Search().Index("someIndex").
Type("node").
Query(termQuery).
Pretty(true).
Do(ctx)
if err != nil {
return nil
}
即使有数据, searchResult.Hits.TotalHits
也会给出0次点击。
数据位于我的本地计算机上运行的Elasticsearch服务器中,如果我运行REST API调用,我可以看到:
{
"_index": "someIndex",
"_type": "node",
"_id": "hashedID",
"_score": 1,
"_source": {
"node": "test",
"hash": "hashedID",
"active": true
}
如何修复我的搜索查询?
答案 0 :(得分:0)
你的go脚本很好,它的工作原理。问题在于查询本身。这是您针对elasticsearch执行的操作。直接尝试使用elasticsearch(通过Sense,Kibana或类似工具)并检查它是否返回您的期望:
POST someIndex/node/_search
{
"query": {
"term": {
"hash": "hashedID"
}
}
}
我怀疑散列的类型为text
(使用elasticsearch 5)。然后,您需要在术语查询中查询hash.keyword
。