在Elastic Search中使用query_string进行部分搜索

时间:2018-10-30 12:37:22

标签: elasticsearch

我的索引有100万个文档。我想为文档添加部分搜索功能,所以我使用以下查询:(以搜索“购物中心”)

GET test/_search
{
  "query": {
    "query_string": {
      "query": "*mall*",
      "default_operator": "OR",
      "fields": ["title^6", "fulltext"]
    }
  }
}

以上查询是否适合部分搜索?

如果文档数增加,是否会影响搜索性能?

1 个答案:

答案 0 :(得分:0)

关于在各种搜索引擎中进行部分搜索的讨论很多,在互联网上找到很多选项和解决方案是很可行的。

您的查询似乎也适用于此。 “ * word *”的性能将是最差的,因为引擎应该浏览所有记录的所有文本。在小型数据集上是可以的(不需要使用ES时),但很快就会变得更糟。最好使用fulltext search(对于用空格或所需内容分隔的单独单词,这是ES的默认模式-只需使用analyzed fields而不使用“ *”)或进行预处理(提取“ mall和填充ES的其他搜索字词)。如果"prefix" query符合要求,也可以。如果wildcard query较慢,则将N-grams用于部分搜索。