我有一个像下面的查询来搜索,我想在不使用过滤器的情况下缓存它。 下面的代码运行良好,但我无法使用" _cache":真实。
{"query": {
"bool": {
"should": [
{
"match": {
"keywords": "heart"
}
},
{
"match": {
"treatment_name": "heart"
}
},
{
"wildcard": {
"keywords": "heart*"
}
},
{
"wildcard": {
"treatment_name": "heart*"
}
},
{
"fuzzy": {
"keywords": "heart"
}
},
{
"fuzzy": {
"treatment_name": "heart"
}
}
],
"minimum_should_match": 2
}}}
第二个代码也可以,但结果没有任何分数,这是非常需要的。
{"filter": {
"fquery": {
"query": {
"bool": {
"should": [
{
"match": {
"keywords": "heart"
}
},
{
"match": {
"treatment_name": "heart"
}
},
{
"wildcard": {
"keywords": "heart*"
}
},
{
"wildcard": {
"treatment_name": "heart*"
}
},
{
"fuzzy": {
"keywords": "heart"
}
},
{
"fuzzy": {
"treatment_name": "heart"
}
}
],
"minimum_should_match": 2
}
},
"_cache": true
}}}
感谢您的帮助
答案 0 :(得分:1)
Elasticsearch不会缓存查询。原因是必须为每个查询单独计算得分。缓存功能仅适用于过滤器。