Skip to content

Commit 7f9778e

Browse files
authored
Merge pull request #7439 from readthedocs/revert-7429-revert-7408-update-es-dep
Revert "Revert ES: update dependencies"
2 parents 80976bf + 1187fc0 commit 7f9778e

File tree

8 files changed

+50
-54
lines changed

8 files changed

+50
-54
lines changed

readthedocs/search/documents.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22

33
from django.conf import settings
4-
from django_elasticsearch_dsl import DocType, Index, fields
4+
from django_elasticsearch_dsl import Document, Index, fields
55
from elasticsearch import Elasticsearch
66

77
from readthedocs.projects.models import HTMLFile, Project
@@ -28,8 +28,8 @@ def update(self, *args, **kwargs):
2828
super().update(*args, **kwargs)
2929

3030

31-
@project_index.doc_type
32-
class ProjectDocument(RTDDocTypeMixin, DocType):
31+
@project_index.document
32+
class ProjectDocument(RTDDocTypeMixin, Document):
3333

3434
# Metadata
3535
url = fields.TextField(attr='get_absolute_url')
@@ -43,14 +43,14 @@ class ProjectDocument(RTDDocTypeMixin, DocType):
4343

4444
modified_model_field = 'modified_date'
4545

46-
class Meta:
46+
class Django:
4747
model = Project
4848
fields = ('name', 'slug', 'description')
4949
ignore_signals = True
5050

5151

52-
@page_index.doc_type
53-
class PageDocument(RTDDocTypeMixin, DocType):
52+
@page_index.document
53+
class PageDocument(RTDDocTypeMixin, Document):
5454

5555
# Metadata
5656
project = fields.KeywordField(attr='project.slug')
@@ -88,7 +88,7 @@ class PageDocument(RTDDocTypeMixin, DocType):
8888

8989
modified_model_field = 'modified_date'
9090

91-
class Meta:
91+
class Django:
9292
model = HTMLFile
9393
fields = ('commit', 'build')
9494
ignore_signals = True

readthedocs/search/faceted_search.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ def query(self, search, query):
148148
class ProjectSearchBase(RTDFacetedSearch):
149149
facets = {'language': TermsFacet(field='language')}
150150
doc_types = [ProjectDocument]
151-
index = ProjectDocument._doc_type.index
151+
index = ProjectDocument._index._name
152152
fields = ('name^10', 'slug^5', 'description')
153153
operators = ['and', 'or']
154154

@@ -163,7 +163,7 @@ class PageSearchBase(RTDFacetedSearch):
163163
),
164164
}
165165
doc_types = [PageDocument]
166-
index = PageDocument._doc_type.index
166+
index = PageDocument._index._name
167167

168168
# boosting for these fields need to be close enough
169169
# to be re-boosted by the page rank.

readthedocs/search/management/commands/reindex_elasticsearch.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
import datetime
22
import logging
33

4-
from celery import chord, chain
4+
from celery import chain, chord
55
from django.apps import apps
66
from django.conf import settings
77
from django.core.management import BaseCommand
88
from django.utils import timezone
99
from django_elasticsearch_dsl.registries import registry
1010

11-
from ...tasks import (index_objects_to_es, switch_es_index, create_new_es_index,
12-
index_missing_objects)
11+
from ...tasks import (
12+
create_new_es_index,
13+
index_missing_objects,
14+
index_objects_to_es,
15+
switch_es_index,
16+
)
1317

1418
log = logging.getLogger(__name__)
1519

@@ -64,11 +68,11 @@ def _run_reindex_tasks(self, models, queue):
6468
app_label = queryset.model._meta.app_label
6569
model_name = queryset.model.__name__
6670

67-
index_name = doc._doc_type.index
71+
index_name = doc._index._name
6872
new_index_name = "{}_{}".format(index_name, timestamp)
6973
# Set index temporarily for indexing,
7074
# this will only get set during the running of this command
71-
doc._doc_type.index = new_index_name
75+
doc._index._name = new_index_name
7276

7377
pre_index_task = create_new_es_index.si(app_label=app_label,
7478
model_name=model_name,

readthedocs/search/serializers.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def get_blocks(self, obj):
130130

131131
sorted_results = sorted(
132132
itertools.chain(sections, domains),
133-
key=attrgetter('_score'),
133+
key=attrgetter('meta.score'),
134134
reverse=True,
135135
)
136136
sorted_results = [
@@ -157,11 +157,11 @@ def get_content(self, obj):
157157
class DomainSearchSerializer(serializers.Serializer):
158158

159159
type = serializers.CharField(default='domain', source=None, read_only=True)
160-
role = serializers.CharField(source='_source.role_name')
161-
name = serializers.CharField(source='_source.name')
162-
id = serializers.CharField(source='_source.anchor')
163-
content = serializers.CharField(source='_source.docstrings')
164-
highlights = DomainHighlightSerializer(source='highlight', default=dict)
160+
role = serializers.CharField(source='role_name')
161+
name = serializers.CharField()
162+
id = serializers.CharField(source='anchor')
163+
content = serializers.CharField(source='docstrings')
164+
highlights = DomainHighlightSerializer(source='meta.highlight', default=dict)
165165

166166

167167
class SectionHighlightSerializer(serializers.Serializer):
@@ -181,7 +181,7 @@ def get_content(self, obj):
181181
class SectionSearchSerializer(serializers.Serializer):
182182

183183
type = serializers.CharField(default='section', source=None, read_only=True)
184-
id = serializers.CharField(source='_source.id')
185-
title = serializers.CharField(source='_source.title')
186-
content = serializers.CharField(source='_source.content')
187-
highlights = SectionHighlightSerializer(source='highlight', default=dict)
184+
id = serializers.CharField()
185+
title = serializers.CharField()
186+
content = serializers.CharField()
187+
highlights = SectionHighlightSerializer(source='meta.highlight', default=dict)

readthedocs/search/tasks.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
from readthedocs.projects.models import Project
1010
from readthedocs.search.models import SearchQuery
1111
from readthedocs.worker import app
12-
from .utils import _get_index, _get_document
12+
13+
from .utils import _get_document, _get_index
1314

1415
log = logging.getLogger(__name__)
1516

@@ -44,17 +45,19 @@ def index_objects_to_es(
4445

4546
if index_name:
4647
# Hack the index name temporarily for reindexing tasks
47-
old_index_name = document._doc_type.index
48-
document._doc_type.index = index_name
48+
old_index_name = document._index._name
49+
document._index._name = index_name
4950
log.info('Replacing index name %s with %s', old_index_name, index_name)
5051

5152
log.info("Indexing model: %s, '%s' objects", model.__name__, queryset.count())
5253
doc_obj.update(queryset.iterator())
5354

5455
if index_name:
55-
log.info('Undoing index replacement, settings %s with %s',
56-
document._doc_type.index, old_index_name)
57-
document._doc_type.index = old_index_name
56+
log.info(
57+
'Undoing index replacement, settings %s with %s',
58+
document._index._name, old_index_name,
59+
)
60+
document._index._name = old_index_name
5861

5962

6063
@app.task(queue='web')

readthedocs/search/utils.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def _get_index(indices, index_name):
8989
:return: DED Index
9090
"""
9191
for index in indices:
92-
if str(index) == index_name:
92+
if index._name == index_name:
9393
return index
9494

9595

@@ -116,7 +116,10 @@ def _indexing_helper(html_objs_qs, wipe=False):
116116
else, html_objs are indexed.
117117
"""
118118
from readthedocs.search.documents import PageDocument
119-
from readthedocs.search.tasks import index_objects_to_es, delete_objects_in_es
119+
from readthedocs.search.tasks import (
120+
delete_objects_in_es,
121+
index_objects_to_es,
122+
)
120123

121124
if html_objs_qs:
122125
obj_ids = []
@@ -148,7 +151,7 @@ def _get_sorted_results(results, source_key='_source'):
148151
source_key: hit._source.to_dict(),
149152
'highlight': hit.highlight.to_dict() if hasattr(hit, 'highlight') else {}
150153
}
151-
for hit in sorted(results, key=attrgetter('_score'), reverse=True)
154+
for hit in sorted(results, key=attrgetter('meta.score'), reverse=True)
152155
]
153156

154157
return sorted_results

readthedocs/settings/base.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -581,16 +581,17 @@ def DOCKER_LIMITS(self):
581581
ES_INDEXES = {
582582
'project': {
583583
'name': 'project_index',
584-
'settings': {'number_of_shards': 1,
585-
'number_of_replicas': 1
586-
}
584+
'settings': {
585+
'number_of_shards': 1,
586+
'number_of_replicas': 1
587+
},
587588
},
588589
'page': {
589590
'name': 'page_index',
590591
'settings': {
591592
'number_of_shards': 1,
592593
'number_of_replicas': 1,
593-
}
594+
},
594595
},
595596
}
596597

requirements/pip.txt

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -47,23 +47,8 @@ GitPython==3.1.8
4747

4848
# Search
4949
elasticsearch==6.8.1 # pyup: <7.0.0
50-
51-
52-
# elasticsearch-dsl==6.3.1 produces this error
53-
# File "/home/travis/build/rtfd/readthedocs.org/.tox/py36/lib/python3.6/site-packages/django_elasticsearch_dsl/documents.py", line 8, in <module>
54-
# from elasticsearch_dsl.document import DocTypeMeta as DSLDocTypeMeta
55-
# ImportError: cannot import name 'DocTypeMeta'
56-
#
57-
# Commit 97e3f75 adds the NestedFacet
58-
git+https://github.com/elastic/elasticsearch-dsl-py@97e3f756a8cacd1c863d3ced3d17abcafbb0f85e#egg=elasticsearch-dsl==6.1.1
59-
60-
# django-elasticsearch-dsl==6.4.1 produces this error
61-
# File "/home/travis/build/readthedocs/readthedocs.org/.tox/py36/lib/python3.6/site-packages/django_elasticsearch_dsl/__init__.py", line 3, in <module>
62-
# from .documents import DocType # noqa
63-
# File "/home/travis/build/readthedocs/readthedocs.org/.tox/py36/lib/python3.6/site-packages/django_elasticsearch_dsl/documents.py", line 7, in <module>
64-
# from elasticsearch_dsl import Document as DSLDocument
65-
# ImportError: cannot import name 'Document'
66-
django-elasticsearch-dsl==0.5.1 # pyup: ignore
50+
elasticsearch-dsl==6.4.0 # pyup: <7.0
51+
django-elasticsearch-dsl==6.4.2 # pyup: <7.0
6752
selectolax==0.2.7
6853

6954
# NOTE: this dep can be removed in python 3.7 in favor of ``date.fromisoformat``

0 commit comments

Comments
 (0)