如何解决如何在 Django Elasticsearch 中映射关键字字段?
我使用 django-elasticsearch-dsl 库作为高级客户端来与 elasticsearch 交互。
这是我的 Document.py 文件
version: "3"
services:
PHP:
build:
context: ./dev/docker/images/PHP
restart: always
working_dir: /var/www/html/magento2
volumes:
- ./:/var/www/html/magento2
environment:
ELASTICSEARCH_HOSTS: http://elasticsearch:9200
MysqL_HOST: MysqL
MysqL_ROOT_PASSWORD: password
ports:
- "9000:9000"
Nginx:
restart: always
image: Nginx:latest
working_dir: /var/www/html/magento2
volumes:
- ./:/var/www/html/magento2
- ./dev/docker/images/Nginx/magento.conf:/etc/Nginx/conf.d/default.conf
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
ports:
- "80:80"
- "443:443"
certbot:
image: certbot/certbot
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
这是模型文件 从 django.db 导入模型
from django_elasticsearch_dsl import Document
from django_elasticsearch_dsl.registries import registry
from .models import Clothes
@registry.register_document
class Clothesdocument(Document):
class Index:
# Name of the Elasticsearch index
name = 'clothes'
settings = {'number_of_shards': 1,'number_of_replicas': 0}
class Django:
# The django model associated with this Document
model = Clothes
# The fields of the model you want to be indexed in Elasticsearch
fields = [
'Type','Pattern','Category','Title','Description',]
我想使用“term”和“terms”查询[例如。 Q("term",Category="Male")] 其中我需要在 Documents.py 中将 Category 定义为 KeywordField,该怎么做?还是我遗漏了什么?
解决方法
我想出了如何显式映射关键字字段:
在文档中
Category = fields.TextField(
fields={'raw': fields.KeywordField()},analyzer="keyword")
与其让 Django-Elasticsearch-Dsl 负责映射,我们还必须显式地映射我们的索引。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。