search api возвращает пустой список, используя drf haystack для упругого поиска
У меня есть следующие модели,
class ProductKeyword(models.Model):
name = models.CharField(max_length=100)
product = models.ManyToManyField(Product, related_name="products")
date_created = models.DateTimeField(auto_now_add=True)
date_updated = models.DateTimeField(auto_now=True)
def __str__(self):
return str(self.name)
и поисковый индекс,
class ProductKeyWordIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.CharField(model_attr="name")
product = indexes.CharField(model_attr="product")
autocomplete = indexes.EdgeNgramField()
@staticmethod
def prepare_autocomplete(obj):
return " ".join((
obj.name, obj.product
))
def get_model(self):
return ProductKeyword
def index_queryset(self, using=None):
return self.get_model().objects.filter(
date_created__lte=timezone.now()
)
и набор,
class ProductKeywordSearchView(HaystackViewSet):
index_models = [ProductKeyword]
serializer_class = ProductKeywordSerializer
и конфигурация URL,
router = routers.DefaultRouter()
router.register(r'prod_key', ProductKeywordSearchView, base_name="prod-key-
search")
# The API URLs are now determined automatically by the router.
urlpatterns = [
url(r'^', include(router.urls))
]
и settings.py (конфигурация стога сена)
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE':
'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://localhost:9200/',
'INDEX_NAME': 'bhkhata',
'INCLUDE_SPELLING': True,
'TIMEOUT': 300,
},
}
я сохранил данные через оболочку django и проверил, что данные успешно сохранены в ProductKeyword
модель.
пытаясь получить результат, используя следующий поиск API,
http://localhost:8090/api/hs/prod_key/?name=sayaabintel
но он возвращает пустой список со статусом 200.
я новичок в упругом поиске, поэтому не уверен, что заставляет этот API выше возвращать пустой список, может быть одна возможность, что объект, который я пытаюсь найти, не будет проиндексирован в упругом поиске, поэтому я применил следующие команды управления упругого поиска для построения индекса,
python manage.py update_index
но все-таки API возвращает пустой список
тогда я попробовал следующее,
python manage.py rebuild_index
все еще возвращает пустой список
а потом
python manage.py clear_index
пока не работает, возвращает пустой список
так чего мне здесь не хватает? я следовал следующей документации drf-haystack,
в упоминании, я использую
elastic search( version 5.4.0)
elastic search-dsl( version 5.3.0)