为什么我的弹性搜索速度慢?

时间:2018-01-02 04:38:40

标签: elasticsearch elasticsearch-5

我在 elasticsearch5.5 中有以下映射:

"append": {
      "type": "short"
    },
    "comment": {
      "type": "text",
      "index": "analyzed"
    },
    "create_time": {
      "type": "date"
    },
    "desc_score": {
      "type": "integer"
    },
    "goods_id": {
      "type": "long"
    },
    "goods_name": {
      "type": "keyword",
      "index": "not_analyzed"
    },
    "handler": {
      "type": "keyword",
      "index": "not_analyzed"
    },
    "is_first_review": {
      "type": "short"
    },
    "logistic_score": {
      "type": "integer"
    },
    "mall_id": {
      "type": "long"
    },
    "order_id": {
      "type": "long"
    },
    "order_sn": {
      "type": "keyword",
      "index": "not_analyzed"
    },
    "parent_id": {
      "type": "keyword",
      "index": "not_analyzed"
    },
    "review_id": {
      "type": "long"
    },
    "score": {
      "type": "integer"
    },
    "service_score": {
      "type": "integer"
    },
    "shipping_id": {
      "type": "long"
    },
    "shipping_name": {
      "type": "keyword",
      "index": "not_analyzed"
    },
    "status": {
      "type": "short"
    },
    "tracking_number": {
      "type": "keyword",
      "index": "not_analyzed"
    },
    "update_time": {
      "type": "date"
    },
    "user_id": {
      "type": "long"
    }

当我在kibana中用以下语句描述并在结果中得到结果。

    {
      "from": 0,
      "size": 10,
      "query": {
      "bool": {
      "filter": [
        {
          "terms": {
            "goods_id": [
              "262628158"
            ],
            "boost": 1.0
          }
        },
        {
          "terms": {
            "status": [
              "2",
              "4"
            ],
            "boost": 1.0
          }
        },
        {
          "range": {
            "create_time": {
              "from": "1514027649",
              "to": "1514632449",
              "include_lower": true,
              "include_upper": true,
              "boost": 1.0
            }
          }
        }
      ],
      "disable_coord": false,
      "adjust_pure_negative": true,
      "boost": 1.0
    }
  },
  "sort": [
    {
      "create_time": {
        "order": "desc"
      }
    }
  ]
}

enter image description here

我很困惑为什么status过滤器花费了这么多时间,status是一个只有五个值的字段,这是导致问题的原因,但我不知道如何优化我的搜索条款。我用谷歌搜索了很多,但还没有回答。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

最后我找到了答案,这是因为elasticsearch5.5使用kd-tree存储数值数据类型(短,长等)的索引数据以进行优化范围搜索,可以在以下文章中找到:< / p>

Better Query Planning For Range Queries

Tune For Search Speed

Elasticsearch Query Execution Order

Kd-tree不适合确切的术语,我将字段类型更改为keyword