我已经索引了包含150多个元数据的单个文档,每个元数据都带有映射:
"ACTIVE": {
"type": "text",
"term_vector": "with_positions_offsets",
"fields": {
"autocomplete_analyzed": {
"type": "text",
"analyzer": "autocomplete"
},
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
并进行设置:
"analysis": {
"analyzer": {
"autocomplete": {
"filter": [
"lowercase"
],
"tokenizer": "autocomplete"
}
},
"tokenizer": {
"autocomplete": {
"min_gram": "3",
"tokenize_on_chars": [
"whitespace",
"letter",
"digit"
],
"type": "edge_ngram",
"max_gram": "7"
}
}
}
我已经使用术语_vector
来在查询中使用快速矢量突出显示。
我的查询:
{
"from": 0,
"size": 24,
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "current",
"type": "best_fields",
"fields": []
}
},
{
"query_string": {
"query": "*current*",
"fields": []
}
},
{
"multi_match": {
"query": "current",
"fuzziness": "1",
"fields": []
}
}
],
"minimum_should_match": 1
}
},
"highlight": {
"type": "fvh",
"fields": {
"*": {}
}
}
}
我的查询要求模糊性,通配符和短语匹配。 模糊性和通配符根据我对后端的要求被禁用或启用。但是在自由文本搜索中,我必须同时启用这两项功能,包括突出显示。
由于模糊和突出显示而导致的查询缓慢。 如何用术语突出显示矢量索引文档?为什么查询运行这么慢?是由于我的查询还是由于索引数据?因为,我将处理数百万个文档。 解决这个时间问题的最佳方法是什么?