我的表中有非常大的数据(超过4lc行)。现在我正在使用mysql全文搜索,但是它非常慢。
我在Google上找到了很多博客,建议使用弹性搜索进行搜索。我们正在测试弹性搜索是否有助于快速搜索。
但是我们得到相反的结果(mysql更好的搜索),但是我怀疑我是否以正确的方式使用了弹性搜索。我使用的弹性搜索查询是:-
{
"query" : {
"bool" : {
"must" : {
"query_string" : {
"query" : "goog*",
"default_field" : "search"
}
}
}
},
"size" : 1000
}
Run Code Online (Sandbox Code Playgroud)
对于mysql中相同的搜索,我们使用了
SELECT SQL_NO_CACHE * FROM table1 WHERE (MATCH (search) AGAINST (' +goog*' IN BOOLEAN MODE))
Run Code Online (Sandbox Code Playgroud)
我得到时间差:-弹性时间= 0.34929585456848
mysql时间= 0.02162504196167
任何我错的建议,我将不胜感激
查询有点慢的第一个原因是因为您在搜索时使用通配符...
https://www.elastic.co/guide/zh-CN/elasticsearch/reference/current/analysis.html
https://www.elastic.co/guide/zh-CN/elasticsearch/reference/current/mapping.html
https://www.elastic.co/guide/zh-CN/elasticsearch/guide/current/search-in-depth.html
我建议您研究一下弹性搜索映射,分析器以获得弹性搜索的好处,您将需要正确地索引数据并应用正确的查询集...
这是一个高级示例,仅显示如何在文件的单词之间进行搜索。
如何为数据建立索引也会影响搜索查询的时间以及将要使用的查询本身。
您可以在这里注册,并观看一段简短的视频,以了解仅由弹性人员提供的不同类型的查询。
https://www.elastic.co/webinars/elasticsearch-query-dsl
如果没有适当的分析,就无法决定哪个更好。在弹性搜索中,数据索引的作用也很大。
归档时间: |
|
查看次数: |
3106 次 |
最近记录: |