目前我使用下面的通配符搜索我的服务,
{
"query": {
"bool": {
"must": [
{
"wildcard": {
"PRODUCT_DESCRIPTION": "\*collaboration\*services\*shiriyara\*"
}
}
]
}
}
}
这将返回我预期的结果。但我正在寻找替代的方法来实现这一点,而不使用通配符查询,因为通配符需要更多的时间。
我在一个“标准”分析字段上尝试了“query_string”。但是如果全字匹配,则返回结果。
"query_string": {
"default_field": "PRODUCT_DESCRIPTION",
"default_operator": "AND",
"query": "collaboration services shiriyara"
}
如果字符串是“collab services shiriyara”,它不会给予任何结果,而通配符给出。
如果有人有想法,请告诉我。指数时间的变化对我来说也很好。
2条答案
按热度按时间ghg1uchk1#
您可以按如下方式拆分通配符,这将适用于您给出的示例:
或者,您可以考虑在索引时使用ngrams,这将允许匹配单词中的字符序列。
voase2hg2#
我知道这是一个老问题,但如果有人再次遇到它:在Elasticsearch 7.9中,引入了一个新的wildcard field type,该wildcard field type针对快速查找字符串值中的模式进行了优化。