我的索引有100万个文档。我想为文档添加部分搜索功能,所以我使用以下查询:(以搜索“购物中心”)
GET test/_search
{
"query": {
"query_string": {
"query": "*mall*",
"default_operator": "OR",
"fields": ["title^6", "fulltext"]
}
}
}
以上查询是否适合部分搜索?
如果文档数增加,是否会影响搜索性能?
答案 0 :(得分:0)
关于在各种搜索引擎中进行部分搜索的讨论很多,在互联网上找到很多选项和解决方案是很可行的。
您的查询似乎也适用于此。 “ * word *”的性能将是最差的,因为引擎应该浏览所有记录的所有文本。在小型数据集上是可以的(不需要使用ES时),但很快就会变得更糟。最好使用fulltext search(对于用空格或所需内容分隔的单独单词,这是ES的默认模式-只需使用analyzed fields而不使用“ *”)或进行预处理(提取“ mall和填充ES的其他搜索字词)。如果"prefix" query符合要求,也可以。如果wildcard query较慢,则将N-grams用于部分搜索。