术语汇总

时间:2017-05-30 14:12:15

标签: performance elasticsearch aggregation

我有一个包含10,000,000个文档的索引。 Elasticsearch配置为使用5个分片,没有副本。

每个文档都有两个字段:

  1. 字段tags,包含三个标记。我的索引中目前有82个用户定义的标签。
  2. 字段singleTag,仅包含同一组82个可能值中的一个标记。 (此字段仅用于比较)
  3. 我想查询前十个标签(按字母顺序排列)。字段tags大约需要300毫秒(字段singleTag只需要150毫秒)。如何提高此查询的性能?

    示例文档:

    {
        "tags": ["player", "ballsports", "goals"],
        "singleTag": "football"
    }
    

    我的索引定义:

    {
      "settings": {
        "number_of_shards": "5",
        "number_of_replicas": "0"
      },
      "mappings" : {
        "issue": {
          "properties": {
            "tags": {
              "index": "not_analyzed",
              "type": "string"
            },
            "singleTag": {
              "index": "not_analyzed",
              "type": "string"
            }
          }
        }
      }
    }
    

    当前(太慢)查询:

    {
        "size" : 0,
        "aggregations" : {
            "tagsAggregation" : {
                "terms" : {
                    "field" : "tags",
                    "size" : 10,
                    "order" : {
                        "_term" : "asc"
                    }
                }
            }
        }
    }
    

    我目前正在使用Elasticsearch 2.4.4,但也欢迎包括Elasticsearch 5在内的解决方案。 Elasticsearch 5中的性能与第一个请求类似,但缓存要好得多。

0 个答案:

没有答案