我是弹性搜索的新手,我的查询遇到了麻烦。
当我做一场比赛时,我得到了这个;
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 5,
"max_score": 1,
"hits": [{
"_index": "stations",
"_type": "station",
"_id": "4432",
"_score": 1,
"_source": {
"SiteName": "Abborrkroksvägen",
"LastModifiedUtcDateTime": "2015-02-13 10:34:20.643",
"ExistsFromDate": "2015-02-14 00:00:00.000"
}
},
{
"_index": "stations",
"_type": "station",
"_id": "9110",
"_score": 1,
"_source": {
"SiteName": "Abrahamsberg",
"LastModifiedUtcDateTime": "2012-03-26 23:55:32.900",
"ExistsFromDate": "2012-06-23 00:00:00.000"
}
}
]
}
}
我的搜索查询如下:
{
"query": {
"query_string": {
"fields": ["SiteName"],
"query": "a"
}
}
}
问题在于,当我运行上面的查询时,我得到空的结果,这很奇怪。我应该收到索引中的两份文件,对吗?
我做错了什么?我的数据索引错误了还是我的查询搞砸了?
感谢我能得到的任何帮助。谢谢你们!
答案 0 :(得分:2)
您的数据或查询都没有错。您似乎不了解数据如何存储在elasticsearch中!
首先,当您索引数据("SiteName": "Abborrkroksvägen"
和"SiteName": "Abrahamsberg"
)时,它们将作为单独的分析术语存储。
当您使用"query":"a"(means here you are looking for the term "a" )
查询ES时,它会查找是否与术语a
匹配,但由于没有任何条款,因此您将获得空结果。
当您使用"query":"a*"(means all terms starts with "a")
查询ES时,它会按预期返回给您。
希望这能澄清你的问题!
答案 1 :(得分:0)
另外,您可以查看我最近发现的有关搜索的文章 - https://www.timroes.de/2016/05/29/elasticsearch-kibana-queries-in-depth-tutorial/