Repository: elastic/elasticsearch-dsl-py

Issue:
Add support for "categorize_text" bucket aggregation
`elasticsearch_dsl/aggs.py` is missing "categorize_text" bucket aggregation. [Categorize text aggregation](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-categorize-text-aggregation.html)

Discussion:
Telomeraz: Why is the version 3.5 failed? What should I do to fix it? @sethmlarson 

Patch:
diff --git a/elasticsearch_dsl/aggs.py b/elasticsearch_dsl/aggs.py
index 69c2d85..96b830e 100644
--- a/elasticsearch_dsl/aggs.py
+++ b/elasticsearch_dsl/aggs.py
@@ -309,6 +309,10 @@ class MultiTerms(Bucket):
     name = "multi_terms"
 
 
+class CategorizeText(Bucket):
+    name = "categorize_text"
+
+
 # metric aggregations
 class TopHits(Agg):
     name = "top_hits"


Test patch:
diff --git a/tests/test_aggs.py b/tests/test_aggs.py
index aa928de..e284886 100644
--- a/tests/test_aggs.py
+++ b/tests/test_aggs.py
@@ -342,6 +342,23 @@ def test_multi_terms_aggregation():
     } == a.to_dict()
 
 
+def test_categorize_text_aggregation():
+    a = aggs.CategorizeText(
+        field="tags",
+        categorization_filters=["\\w+\\_\\d{3}"],
+        max_matched_tokens=2,
+        similarity_threshold=30,
+    )
+    assert {
+        "categorize_text": {
+            "field": "tags",
+            "categorization_filters": ["\\w+\\_\\d{3}"],
+            "max_matched_tokens": 2,
+            "similarity_threshold": 30,
+        }
+    } == a.to_dict()
+
+
 def test_median_absolute_deviation_aggregation():
     a = aggs.MedianAbsoluteDeviation(field="rating")