搜索引擎的原理及Elasticsearch的使用

版权声明:如果转载,请注明 https://blog.csdn.net/weixin_44607176/article/details/88691306

搜索引擎的原理:

通过搜索引擎进行数据查询时,搜索引擎并不是直接在数据库中进行查询,而是搜索引擎会对数据库中的数据进行一遍预处理,单独建立起一份索引结构数据。

关于Elasticsearch的介绍:

Elasticsearch是一个使用Java编写的开源框架,它可以快速的储存、搜索和分析海量数据,底层是开源库Lucene.但是不能直接使用,需要自己去写代码调用它的接口. Elastic是Lucene的封装,提供了REST API的操作接口,是目前来说全文索引最好用的.
在Elasticsearch中,文档归属于一种类型(type), 而这些类型存在于(index)中,集群可以包含多个索引(Index)(数据库),每一个索引可以包含多个类型(types)表,每一个类型包含多个文档(documents)行,然后每个文档包含多个字段(Fields)

接下来,使用Docker来安装Elasticsearch,在这需要使用配置文件映射到Ubuntu中,在Mac里面是无法使用的,可以通过下面链接来下载配置文件

链接:https://pan.baidu.com/s/15HOpNXp8nXmhK2rLwgp86Q 密码:62gz

1.获取镜像,可以通过网络远程来下载

docker image pull delron/elasticsearch-ik:2.4.6-1.0
2.修改elasticsearch的配置文件,目录是:elasticsearch-2.4.6/config/elasticsearch.yml第54行,更改ip地址
network.host: 0.0.0.0 # 此处为你的ip地址(使用ifconfig来查看)
3.创建docker容器运行
docker run -dit --network-host --name=elasticsearch -v /home/python/elasticsearch-2.4.6/config:/usr/shar/elasticsearch/config delron/elasticsearch-ik:2.4.6-1.0

备注:

1.这条命令在Mac下的docker无法正常启动,猜测是因为-network=host在mac下无法映射
2.elasticsearch-ik中的这个-ik是支持中文的意思

在实际应用中我们可以使用mysqlsmom全量同步 Mysql 数据到 Elasticsearch

下载mysqlsmom:https://github.com/m358807551/mysqlsmom/blob/master/docs/source/hello.md

mysqlsmom使用文档:https://mysqlsmom.readthedocs.io/en/latest/hello.html#

在Django中,可以通过haystack来调用Elasticsearch搜索引擎

下面介绍一下在Django中配置haystack对接的方法:
# 注册应用
INSTALLED_APPS = [
          'haystack',
]
在配置文件中配置haystack使用的搜索引擎后端

# Haystack配置
HAYSTACK_CONNECTIONS = {
            ‘default': {
                    'ENGINE' :'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
                    'URL': 'http://0.0.0.0:9200/', # 此处为elasticsearch运行的服务器ip地址,端口号固定为9200
                    'INDEX_NAME': ' ',  # 此处为elasticsearch建立的索引库名称
            },
}            
# 当添加、修改、删除数据时,自动生成索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

注意:项目索引在两个时候运行

1.项目开始之前手动生成索引
2.项目在添加、修改、删除时自动生成索引

展开阅读全文

没有更多推荐了,返回首页