我有一个带有“标签”索引的elasticsearch v2.x集群,该索引包含大约5000个标签:{tagName, tagID}
。给定一个字符串,是否可以查询标签索引以获取在该字符串中找到的所有标签?我不仅要精确匹配,而且还希望能够控制模糊匹配而又不过于慷慨。太慷慨了,只有在标签中的所有标记都位于彼此之间一定距离(例如5个单词)内时,标签才应该匹配。
例如,给定字符串:
Model 22340 Sound Spectrum Analyzer
以下标记应匹配:
sound analyzer
sound
spectrum
analyzer
但不是
sound meter
light spectrum
chemical analyzer
最佳答案
我认为不可能创建能够自动标记随机字符串的准确的Elasticsearch查询。这基本上是一个反向查询。将标签与文档匹配的最准确方法是构造对标签的查询,然后搜索文档。显然,如果您需要遍历每个标签以自动为文档添加标签,则效率将非常低下。
要执行反向查询,您想使用Elasticsearch Percolator API:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-percolate.html
该API非常灵活,可让您对具有多个字段的文档创建相当复杂的查询。
基本概念是这样的(假设您的代码具有应用特定的ID字段):
这也是一篇不错的文章:https://www.elastic.co/blog/percolator-redesign-blog-post
关于elasticsearch - Elasticsearch-使用 “tags”索引发现给定字符串中的所有标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37889680/