Elastic Search (3)
文章目录
elastic search的使用优化
批量导入和导出工具
给出了elasticsearch-dump 和Elasticsearch-Exporter 两种方式导出数据,
问题:基于 ES 都是比较老的版本,所以说不一定能用。并且最好是能够操作docker 的那种。
elasticdump 是可以使用docker 安装的,但是这个教程是使用 npm 安装的。可以实现导入数据
|
|
(一般来说 需要先创建mapping 关系之后再导入数据)
导出数据到文件也能够实现
|
|
结论: 可以尝试使用docker 安装试一下的
接着上面关于 elasticdump 补充
使用功能指定查询条件,那么就可以对查询结果备份。如果按照日期进行查询,那么可以迁移指定时间段内的数据。
|
|
看了这个github,发现 elasticsearch dump 是一个更加可行的方案。
四年之前的英文教程,可以参考一下。
Fuzzy 模糊检索( Fuzzy Queries)
|
|
那么既然是可以将field 设置为 fields,那么其实就可以使用单个字段拼接的呀(但是这个不知道对于检索的速度有没有影响)
ES 中的组合查询
- 基于bool 实现的组合查询
这个给出了一个es 组合查询时候的一个case,非常建议好好看看总结一下。
- ES 自带的多字段检索 (Multi-field Search)
下面是对 multi match 很好的总结文档
multi_match 官方文档 Elasticsearch Query DSL 整理总结—— Multi Match Query
autocompletion
在 Elasticsearch 的使用优化 中介绍过自动匹配技术,但是没有成型。这里可以再补充一点:使用 match_phrase_prefix
进行前缀查询
|
|
analyzer 进行分词
分词器是专门处理分词的组件,Analyzer 由三部分组成
- Character Filters (针对原始文本处理,例如去除 html)
- Tokenizer(按照规则切分为单词)
- Token Filter (将切分的单词进行加工,小写,删除 stopwords,增加同义语)
内置的分词器
不同的 analyzer 意味着不同的检索方式。
- Standard Analyzer - 默认分词器,按词切分,小写处理
- Simple Analyzer - 按照非字母切分(符号被过滤),小写处理
- Stop Analyzer - 小写处理,停用词过滤(the ,a,is)
- Whitespace Analyzer - 按照空格切分,不转小写
- Keyword Analyzer - 不分词,直接将输入当做输出
- Patter Analyzer - 正则表达式,默认 \W+
- Language - 提供了 30 多种常见语言的分词器
- Customer Analyzer 自定义分词器
从下面的链接中可以查看不同 analyzer 的实际效果
其他问题
-
性能问题,使用filter 和使用 bool 实现相同的功能,两者在时间或者内存使用上的差别。
-
Function 得分:衰减函数( Function Score: Decay Functions ), 这点可以继续探索一下
参考资料
文章作者 jijeng
上次更新 2020-07-07