【发布时间】:2017-12-01 03:28:10
【问题描述】:
在 Elasticsearch 中,如何搜索任意子字符串,可能包括空格? (搜索一个词的一部分是不够的;我想搜索整个字段的任何子字符串。)
我想它必须在 keyword 字段中,而不是 text 字段中。
假设我的 Elasticsearch 索引中只有几千个文档,我尝试:
"query": {
"wildcard" : { "description" : "*plan*" }
}
效果符合预期——我得到了描述中包含“计划”的每个项目,甚至是“替代”之类的项目。
现在,我想做
"query": {
"wildcard" : { "description" : "*plan is*" }
}
...这样我就可以在许多其他可能性中匹配带有“Kaplan is not”的文档。
这似乎不适用于通配符、匹配前缀或我可能看到的任何其他查询类型。我如何简单地搜索任何子字符串? (在 SQL 中,我只会做description LIKE '%plan is%')
(我知道任何这样的查询对于大型数据集来说都会很慢甚至不可能。)
【问题讨论】:
-
您需要标记您的描述,以便搜索单独的单词。阅读他们的文档:elastic.co/guide/en/elasticsearch/reference/current/…
-
如果你真的想搜索一个任意子串,你需要去ngrams:elastic.co/guide/en/elasticsearch/guide/current/…
标签: elasticsearch lucene