[关闭]
@xlsd1996 2019-07-20T16:07:52.000000Z 字数 1045 阅读 693

使用docker+ElasticSearch搭建简单问答系统


流程:
1.利用docker来运行一个基础的elasticserarch服务。
2.利用python 将已有的问答数据存入 es 数据库中。
3.利用python 完成对问答数据的查询.

讲解:
利用docker来完成es的快速搭建是最方便的,而且了解一下docker很有好处。当然前提是你有一个可以操作的linux系统 ,并且上面 安装了docker 服务。

相关资料:
1.随手找的docker基础资料,稍微看一下 教程架构 ,容器使用部分, 知道docker的用处和几个基础指令就行。
2.利用docker来下载与运行一个 es 容器,可以参照 这个,顺利的话非常简单, 但是更加建议使用 这个 ,这里面包含了kibana,可以方便的在线查看和浏览 es中数据(需要的话自行查阅 docker-compose 的写法和用法)。
3.确认es服务顺利运行起来以后,利用python处理数据。
最后整理成的格式为dict类型,一个问答对是一个dict,可以是{'question':xxx,'answer':xxx}这样的。
4.利用python的elasticsearch包将数据存入es中(正式说法是建立索引),相关的api可以参照这里,参照官方文档更好。
5.利用python完成查询,可以大概参照以下代码,以下代码是利用content进行对数据的[ "post_title", "comment","post_content" ]三个字段进行最相近文本的搜索:

  1. from elasticsearch import Elasticsearch
  2. es = Elasticsearch(hosts='192.168.126.110')
  3. def es_search_by_content(content,num=10):
  4. rst = es.search(
  5. index='comment-all',
  6. body={"query":{"multi_match" : {
  7. "query": content,
  8. "fields": [ "post_title", "comment","post_content" ]
  9. }}},
  10. size=num)['hits']
  11. total = rst['total']
  12. hits = rst['hits']
  13. res = [item['_source'] for item in hits]
  14. return res
  15. if(__name__=='__main__'):
  16. print(es_search_by_content("沃顿不行啊,不适合现在的湖人了"))
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注