如何在Elasticsearch中使用搜索

拉杰德拉·巴古古尔(Rajendra Badgujar)

我使用的是python 2.7.11和djnago 1.10.2。我创建了产品模型,并在数据库中保存了1000种产品。(postgrelsql)实际上,我使用了Django elasticsearch,但无法正常工作。它的搜索仅基于产品名称,如果需要搜索类别,颜色等,则需要输入。然后显示相关的产品。我尝试了例子。

from haystack import indexes
from product.models import Product

class ProductIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    product_name = indexes.CharField(model_attr='product_name')
    product_colour = indexes.CharField(model_attr='product_colour')

    def get_model(self):
        return Product

    def index_queryset(self, using=None):
        return self.get_model().objects.all() 

我创建了ProductColour模型,并在产品模块中使用了product_colour外键。如果我搜索product_colour,则显示所有相关数据。

遵循一些步骤:

  • 安装django-haystack。
  • INSTALLED_APPS settings.py文件中添加了干草堆
  • 修改settings.py文件。

    HAYSTACK_CONNECTIONS = {
        'default': {
            'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',
        },
    }
    
  • 在urls.py中添加了url。

    urlpatterns = patterns('',
        url(r'^/search/?$', MySearchView.as_view(), name='search_view'),
    )
    
  • 产品型号。

    class Product(models.Model):
        product_name = models.CharField(max_length=100)
        product_description = models.TextField(default=None, blank=True, null=True)
        product_colour = models.ManyToManyField(ProductColour, blank=True, default=None)
        .......
        .......
        .......
    
  • search.html。

    <form method="get" action=".">
        <table>
            {{ form.as_table }}
            <tr>
                <td>&nbsp;</td>
                <td>
                    <input type="submit" value="Search">
                </td>
            </tr>
        </table>
    </form>
    
特里克森

我使用了Django elasticsearch,但无法正常工作。

根据您的干草堆设置,您没有使用Elasticsearch。您正在使用,SimpleEngine这根本不是真正的搜索引擎。要使用Elasticsearch,您的设置必须包含以下内容:

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://127.0.0.1:9200/',
        'INDEX_NAME': 'haystack',
    },
}

注意,干草堆不是搜索引擎本身。它只是在django应用程序内部使用多个搜索引擎的工具。您已经安装了elasticsearch吗?

我猜目前无法正常工作,因为SimpleEngine无法Many2ManyField正确处理您的问题

在您中,ProductIndex您将product_colour定义为CharField。但是您引用了模型中的整个相关模型实例ProductColour使用aMultiValueField来做到这一点:

from haystack import indexes
from product.models import Product

class ProductIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    product_name = indexes.CharField(model_attr='product_name')

    # use a MultiValueField for your m2m relation
    product_colours = indexes.MultiValueField()

    # define this method that returns all the values for your product_colours index field
    # it must be called "prepare_{your field name}"
    def prepare_product_colours(self, object):
        return [colour.name for color in object.product_colour.all()]

然后,您将需要一个用于搜索索引的模板,该模板text将按照haystack文档中的描述生成字段的内容

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在elasticsearch中使用冒号搜索模式?

来自分类Dev

如何在ElasticSearch的嵌套查询中使用&堆叠搜索条件

来自分类Dev

如何在elasticsearch-dsl(5.4.0)中的搜索API中使用索引

来自分类Dev

如何在ElasticSearch中使query_string搜索精确短语

来自分类Dev

如何在php中使用mysql搜索?

来自分类Dev

如何在Spotlight搜索中使用通配符?

来自分类Dev

如何在 Laravel 中使用搜索功能?

来自分类Dev

如何使用querystringquery在elasticsearch中使用通配符搜索词

来自分类Dev

如何在ElasticSearch中使用Lucene SpanQuery

来自分类Dev

如何在elasticsearch pyes中使用“建议”?

来自分类Dev

如何在ElasticSearch中使用Redis

来自分类Dev

如何在Elasticsearch中使用映射?

来自分类Dev

如何在Firefox中使用Google搜索而不是OpenDNS搜索

来自分类Dev

如何在 MySQL 的搜索中使用 @ 进行 LIKE 搜索?

来自分类Dev

如何在Elasticsearch中搜索

来自分类Dev

如何在Skobbler中使用POI /地理编码搜索

来自分类Dev

如何在企业中使用Github API进行搜索

来自分类Dev

如何在svn中使用svnlook搜索更改的项目

来自分类Dev

如何在Hadoop中使用Twitter搜索API?

来自分类Dev

如何在Android中使用YouTube数据API搜索视频

来自分类Dev

如何在VB.NET中使用DateTimePicker搜索日期

来自分类Dev

如何在sklearn网格搜索中使用日志丢失

来自分类Dev

如何在Delphi搜索路径中使用系统变量?

来自分类Dev

如何在C#中使用Windows搜索服务

来自分类Dev

如何在C中使用bsearch在结构内搜索数组

来自分类Dev

如何在reactjs中使用框架显示搜索输入?

来自分类Dev

如何在Kubernetes中使用VPA自动缩放弹性搜索?

来自分类Dev

如何在参考文件中使用全文搜索?

来自分类Dev

如何在Smartsheet Python SDK中使用搜索结果?

Related 相关文章

  1. 1

    如何在elasticsearch中使用冒号搜索模式?

  2. 2

    如何在ElasticSearch的嵌套查询中使用&堆叠搜索条件

  3. 3

    如何在elasticsearch-dsl(5.4.0)中的搜索API中使用索引

  4. 4

    如何在ElasticSearch中使query_string搜索精确短语

  5. 5

    如何在php中使用mysql搜索?

  6. 6

    如何在Spotlight搜索中使用通配符?

  7. 7

    如何在 Laravel 中使用搜索功能?

  8. 8

    如何使用querystringquery在elasticsearch中使用通配符搜索词

  9. 9

    如何在ElasticSearch中使用Lucene SpanQuery

  10. 10

    如何在elasticsearch pyes中使用“建议”?

  11. 11

    如何在ElasticSearch中使用Redis

  12. 12

    如何在Elasticsearch中使用映射?

  13. 13

    如何在Firefox中使用Google搜索而不是OpenDNS搜索

  14. 14

    如何在 MySQL 的搜索中使用 @ 进行 LIKE 搜索?

  15. 15

    如何在Elasticsearch中搜索

  16. 16

    如何在Skobbler中使用POI /地理编码搜索

  17. 17

    如何在企业中使用Github API进行搜索

  18. 18

    如何在svn中使用svnlook搜索更改的项目

  19. 19

    如何在Hadoop中使用Twitter搜索API?

  20. 20

    如何在Android中使用YouTube数据API搜索视频

  21. 21

    如何在VB.NET中使用DateTimePicker搜索日期

  22. 22

    如何在sklearn网格搜索中使用日志丢失

  23. 23

    如何在Delphi搜索路径中使用系统变量?

  24. 24

    如何在C#中使用Windows搜索服务

  25. 25

    如何在C中使用bsearch在结构内搜索数组

  26. 26

    如何在reactjs中使用框架显示搜索输入?

  27. 27

    如何在Kubernetes中使用VPA自动缩放弹性搜索?

  28. 28

    如何在参考文件中使用全文搜索?

  29. 29

    如何在Smartsheet Python SDK中使用搜索结果?

热门标签

归档