我在表中有非常大的数据(超过4lc行)。现在我正在使用mysql全文搜索,但它非常慢。
我在谷歌上找到了很多建议使用弹性搜索的博客。我们正在测试弹性搜索是否有助于快速搜索。
但我们得到了相反的结果(mysql更好的搜索),但我怀疑我是否以正确的方式使用了弹性搜索。我使用的弹性搜索查询是:-
{
"query" : {
"bool" : {
"must" : {
"query_string" : {
"query" : "goog*",
"default_field" : "search"
}
}
}
},
"size" : 1000
}对于我们在mysql中使用的相同搜索
SELECT SQL_NO_CACHE * FROM table1 WHERE (MATCH (search) AGAINST (' +goog*' IN BOOLEAN MODE))我得到时间差:-弹性时间= 0.34929585456848
mysql时间= 0.02162504196167
如果我的建议有误,我将不胜感激。
发布于 2016-04-05 19:05:33
查询有点慢的第一个原因是你在搜索时使用了通配符...
https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
https://www.elastic.co/guide/en/elasticsearch/guide/current/search-in-depth.html
我会建议你研究弹性搜索映射,分析器,以获得弹性搜索的好处,你需要正确地索引你的数据,并应用正确的查询集……
Filename search with ElasticSearch
这是一个小的高级示例,仅展示如何在文件的单词之间实现搜索。
数据的索引方式也会影响搜索查询的时间,以及您将使用的查询本身。
你可以在这里注册,看看由elastic guys提供的不同类型的查询的短视频。
https://www.elastic.co/webinars/elasticsearch-query-dsl
在elastic-search中,如果没有适当的analysis..that,你就无法决定哪一个更好,因为在弹性搜索中,数据的索引影响很大。
https://stackoverflow.com/questions/36423359
复制相似问题