elasticsearch - 在Elasticsearch索引中存储MD5哈希的正确方法

标签 elasticsearch

我正在使用Elasticsearch创建自定义搜索API。我需要将MD5哈希存储在其中一个索引中。我还需要该字段可搜索。我应该如何索引/分析字段,以便搜索足够有效?
我需要查询足够快地工作以支持自动完成。

到目前为止,我已经将该字段映射为仅文本。
我正在使用“match_phrase_prefix”查询,该查询到目前为止效果良好。但是,我担心随着索引越来越多的文档而导致性能下降。
我还想使用“完成”建议映射,但这限制了我们对其他任何字段的过滤。因此,它将无法正常工作。
我还计划使用具有较低min_gram和较高max_gram值的'edge_ngram'分析器。注意,该映射的索引大小迅速增加。

最佳答案

由于MD5哈希由单个 token 组成,因此您无需使用match_phrase_prefix,而只需使用prefix。试试看。

还要注意,您可以通过使用context suggester而不是完成建议程序来绝对使用完成和过滤。但是,当然,您只能提供类别上下文或地理上下文,而不能提供日期范围或其他更多演变的过滤器/上下文。

如果您一直在搜索确切的MD5,则可以使用keyword类型。
但是,如果您要搜索MD5前缀(某些情况下+一些过滤器),则即使索引大小会增加,带有适当的edge-ngram分析器的text也会更好地工作。

在不了解您的用例的情况下,几乎可以说全部。

关于elasticsearch - 在Elasticsearch索引中存储MD5哈希的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56622679/

相关文章:

elasticsearch - ElasticSearch可以在将源文档保留在原位置的同时仅创建/存储索引吗?

elasticsearch - 基本认证 Kibana REST API

elasticsearch - 同时追加/插入 Elasticsearch

elasticsearch - ES 7.7 加入集群失败,因为超时

elasticsearch - 在 Elastic Search 中将嵌套查询与 bool 查询相结合

java - 如何使用 Java API 获得 Elasticsearch 5.2.2 搜索突出显示

spring-boot - 文本字段未针对需要每个文档 : Elasticsearch 的操作进行优化

elasticsearch - 如何使用 StormCrawler 将网站内容存储在状态索引中?

search - 从Elasticsearch中的精确单词匹配开始?

python - json.dump() 将类型从 `dict` 更改为 `NoneType`