我们的编程思路是:
1.首先根据用户的需求提出的主图案,颜色,技法,我们应该在素材resource表中找到包含有这三种需求的素材list
2.然后根据素材list的每一个素材,在设计图stylepatternshow表中找到包含有该种素材的设计图
所以总体上需要两个类,一个是ElasticMaterialObj类,能够根据需求找到素材list;另一个是ElasticGraphObj类,能够根据素材list推荐出设计图。每个类基本上有这些方法:
1)__init__ :初始化方法,初始化在elasticsearch(下面简称es)建立的索引名,索引类型,服务器ip(这里我先采用本地测试ip默认为127.0.0.1)
2)create_index:创建索引方法,根据索引名,索引类型在es中创建出索引
3)bulk_Index_Data:批量导入数据,把数据导入建立的索引中(说明一下,这里我先采用:人工操作,从ssh穿透服务器下载数据到本地成json格式文件,后面,我会展示如何从ssh穿透的阿里云内网rdb中取得数据)
4)get_Data_By_Body:根据查询body取得数据
为了能够让python连接上es,必须确保你开启了es服务,如下:
启动Elasticsearch
进入
/usr/local/elasticsearch
目录之中,输入以下命令,开始Elasticsearch服务./bin/elasticsearch
1.导入相关类
#coding=utf-8
from elasticsearch import Elasticsearch '''和es建立连接'''
from elasticsearch.helpers import bulk '''批量导入数据'''
from elasticsearch.helpers import scan '''获取大量数据,es默认获取10条结果'''
import json
2. ElasticMaterialObj类
- 2.1 __init__方法
def __init__(self,index_name,index_type,ip="127.0.0.1"):
'''
:param index_name: 索引名
:param index_type: 索引类型
:param ip: ip
'''
self.index_name = index_name
self.index_type = index_type
# 无用户名密码状态
self.esObj = Elasticsearch([ip]) '''和es建立连接,important'''
# 用户名密码状态
# self.esObj = Elasticsearch([ip],http_auth=('elastic', 'password'),port=9200)
- 2.2 create_index方法
def create_index(self,index_name='resource',index_type=