elasticsearch - 弹性搜索 - shingle 令牌过滤器的替代选项
问题描述
我想实现自动建议功能,就像谷歌搜索一样。Shingle Token Filter 最适合我的要求。让我解释一下我的索引详细信息。
索引大小为 16gb - 2000 万份文档。每个文档的平均大小为 0.53 kb。
瓦过滤器应用于 WorkDescripton 字段。WorkDescripton 字段的平均大小为 0.45kb。
在分析器下方,索引创建时使用的过滤器和映射
一个。筛选
"shingle-filter" : { "max_shingle_size" : "3", "min_shingle_size" : "2", "output_unigrams" : "false", "type" : "shingle" }
湾。分析仪-
"ana_autocomplete" : { "filter" : [ "lowercase", "shingle-filter" ], "tokenizer" : "standard" }
C。与工作描述字段的映射是
"workDesc" : { "type" : "text", "fields" : { "suggestions" : { "type" : "text", "analyzer" : "ana_autocomplete", "fielddata" : true, "fielddata_frequency_filter" : { "min" : 0.001, "max" : 0.1, "min_segment_size" : 500 } }, "workDesc" : { "type" : "text", "analyzer" : "ana_tenderinfo" } } }
我使用聚合查询来获取结果
GET tenderinfo_version_9/_search { "aggs": { "workDesc_111": { "terms": { "field":"workDesc.suggestions", "include":"civil.*", "order":[ { "_count":"desc" }], "size":10 } } } ,"size":0, "_source":false }
当文档为 10 万时,自动完成功能就像魅力(结果以毫秒为单位)一样工作,但是当文档为 2000 万时,我得到了超时错误。
弹性搜索服务器配置是
操作系统 - Ubantu 18.04.6 LTS
CPU - Intel(R) Core(TM) i5-7400 CPU @ 3.00 GHz。1个物理处理器,4核,4线程
内存 - 16GB
有没有其他选择可以得到相同的结果?请指教
解决方案
推荐阅读
- java - 用其他数组填充数组
- spring-boot - 传递带有@JsonIgnore 标记的属性时抛出错误
- python - 如何在pyqt5中改变QGraphicsSvgItem的颜色?
- java - 无法使用 Spring Boot 从资源中读取文件
- python - 如何解决jupyter中的变量未定义错误
- javascript - 如何将对象从一个函数解析到另一个函数?
- google-colaboratory - 如何在 Google Colaboratory 上使用 Conda 安装 Bob
- angular - 角垫选择
- php - Wordpress XAMPP Apache 无法启动
- r - 在控制图 RStudio 中修改轴