首先,尽可能尝试不要使用没有前缀的正则表达式或通配符。搜索的方式
.*foo.*是将索引字典中的每个单个词与模式进行匹配,该模式又被构建为匹配项的OR查询。语料库中唯一词的数量为
O(n) ,随后的搜索也非常昂贵。
本文对此有更多详细信息:https : //www.found.no/foundation/elasticsearch-from-the-bottom-
up/
其次,您的url可能以使“ info-for”和“ media”在索引中分开的方式进行标记。因此,
info-for/media字典中没有用于匹配正则表达式的-term。
您可能想做的是使用path_hierarchy -tokenizer 分别索引路径和域,以生成术语。
这是一个演示令牌生成方式的示例:https
:
//www.found.no/play/gist/ecf511d4102a806f350b#analysis
即
/foo/bar/baz生成令牌
/foo/bar/baz, /foo/bar,/foo并将域令牌
foo.example.com化为
foo.example.com, example.com, com
在下面搜索任何内容都
/foo/bar可以是一个简单的术语过滤器匹配
path:/foo/bar。那是性能更高的筛选器,也可以缓存。



