elasticsearch,Optimization,elasticsearch" /> elasticsearch,Optimization,elasticsearch" />

Optimization 弹性搜索查询优化

Optimization 弹性搜索查询优化,optimization,elasticsearch,Optimization,elasticsearch,有没有办法在Elasticsearch中优化查询?我使用下面的查询。它平均需要15-20秒,有时有点快4-5秒 我的服务器配置:-Centos 6.3,8核16GB RAM { "fields": [ "_id", "aff_id", "post_uri", "blog_cat", "cat_score", "secondary_cat", "secondary_cat_score", "title", "_score" ], "min_score": 0.0

有没有办法在Elasticsearch中优化查询?我使用下面的查询。它平均需要15-20秒,有时有点快4-5秒

我的服务器配置:-Centos 6.3,8核16GB RAM

{
"fields": [
  "_id",
  "aff_id",
  "post_uri",
  "blog_cat",
  "cat_score",
  "secondary_cat",
  "secondary_cat_score",
  "title",
  "_score"
],
"min_score": 0.0134,
"query": {
  "bool": {
     "must": [
        {
           "query_string": {
              "fields": [
                 "title"
              ],
              "query": "Archery OR Athletics OR Badminton OR Basketball OR Beach Volleyball OR Boxing OR Canoe Slalom OR Canoe Sprint OR Cycling BMX OR Cycling Mountain Bike OR Cycling Road OR Cycling Track OR Diving OR Equestrian / Dressage OR Equestrian / Eventing OR Equestrian / Jumping OR Fencing OR Football OR Golf OR Gymnastics Artistic"
           }
        }
     ],
     "must_not": [],
     "should": []
   }
}
我读了一篇关于Elasticsearch查询优化的文章

尝试了如下所示的解决方案更改查询,但没有得到任何差异

    {
   "fields": [
        "aff_id",
        "post_uri",
        "blog_cat",
        "cat_score",
        "secondary_cat",
        "secondary_cat_score",
        "title"
   ],
   "query": {
      "filtered": {
         "query": {
            "bool": {
               "must": [
                  {
                     "term": {
                        "url.cat": "sports"
                     }
                  },
                  {
                     "range": {
                        "main_cat.sports": {
                           "gte": ".15"
                        }
                     }
                  }
               ]
            }
         },
         "filter": {
            "query": {
               "query_string": {
                  "fields": [
                     "body",
                     "title"
                  ],
                  "query": "Archery OR Athletics OR Badminton OR Basketball OR Beach Volleyball OR Boxing OR Canoe Slalom OR Canoe Sprint OR Cycling BMX OR Cycling Mountain Bike OR Cycling Road OR Cycling Track OR Diving OR Equestrian / Dressage OR Equestrian / Eventing OR Equestrian / Jumping OR Fencing OR Football OR Golf OR Gymnastics Artistic"
               }
            }
         }
      }
   },
   "from": 0,
   "size": 1000
}

注意:我使用的是默认分析器,我没有定义自定义分析器。

以下是查询的优化版本:-

更改:-

1在查询中使用过滤器,过滤器被缓存。 2默认情况下,查询字符串/查询筛选器不缓存,但我们可以通过设置_cache:true来打开它


是否尝试在查询中删除字段部分?您的索引中当前有多少条记录?你们的分析器和映射定义是什么?是的,我也尝试过删除字段部分。在我的索引中大约有21200000条记录。映射是在索引创建时定义的映射,你能发布它吗?BTW,200M的记录是一个大的数字要考虑到你的机器配置只是16GB RAM。您还可以检查索引的大小并将其发布在此处。我通常为索引50GB的索引数据租用一个64GB的RAM。我的索引大小是110GB
{
   "fields": [
        "aff_id",
        "post_uri",
        "blog_cat",
        "cat_score",
        "secondary_cat",
        "secondary_cat_score",
        "title"
   ],
   "query": {
      "filtered": {
         "filter": {
            "bool": {
               "must": [
                  {
                     "term": {
                        "url.cat": "sports"
                     }
                  },
                  {
                     "range": {
                        "main_cat.sports": {
                           "gte": ".15"
                        }
                     }
                  },
                  {
                     "fquery": {
                        "query": {
                           "query_string": {
                              "fields": [
                                 "body",
                                 "title"
                              ],
                              "query": "Archery OR Athletics OR Badminton OR Basketball OR Beach Volleyball OR Boxing OR Canoe Slalom OR Canoe Sprint OR Cycling BMX OR Cycling Mountain Bike OR Cycling Road OR Cycling Track OR Diving OR Equestrian / Dressage OR Equestrian / Eventing OR Equestrian / Jumping OR Fencing OR Football OR Golf OR Gymnastics Artisti"
                           }
                        },
                        "_cache": true
                     }
                  }
               ]
            }
         }
      }
   },
   "from": 0,
   "size": 1000,
   "sort": [
      {
         "_uid": "desc"
      }
      ]
}