Python操作ElasticSearch搜索引擎【20201008】

发表于 2020-10-08
阅读 64

介绍

介绍

今天我们学习如何通过Python操作ElasticSearch搜索引擎。学会使用Python操作ElasticSearch数据库之后,我们就可以使用Python制作拥有强大搜索功能的应用程序了。ElasticSearch的搜索功能要远远超过MySQL这样关系型数据库基于SQL语句实现的基本搜索功能。

在Python2.7下使用的是elasticsearch这个软件包,这个elasticsearch库的原生对象设计的还是非常简单的,相信大家一看就能够学会,那么就跟着福哥来学习它吧~~

安装

安装elasticsearch

直接使用pip安装即可

pip insall elasticsearch

5bc2c48272d7fa04.jpg

教程

插入数据

向ES内插入一条数据

from elasticsearch import Elasticsearch

# connect
es = Elasticsearch(host="192.168.1.168",port=9200,timeout=60)

# insert
data = {
    "id":1,
    "label":"福哥".decode("gbk").encode("utf-8"),
    "dt":"2021-02-27 12:12:12"
}
es.index(index="test",doc_type="all_type",body=data)

查看数据

查看刚刚插入的数据

from elasticsearch import Elasticsearch

# connect
es = Elasticsearch(host="192.168.1.168",port=9200,timeout=60)

# query
query = {
    "query":{
        "term":{
            "id":1
        }
    }
}
results = es.search(index="test",doc_type="all_type",body=query)
print ("查询到:" + str(results['hits']['total']) + "结果")
for result in results['hits']['hits']:
    id = result['_id']
    data = result['_source']
    print ("[" + id + "] " + str(data['id']) + "," + data['label'] + "," + data['dt'])

3eba4a7b2849ff34.jpg

更新数据

修改一下刚刚插入的数据

from elasticsearch import Elasticsearch

# connect
es = Elasticsearch(host="192.168.1.168",port=9200,timeout=60)

# update
dataid = "7m4t5HcB-GtPtjsRaLCT"
doc = {
    "id":1,
    "label":"同福".decode("gbk").encode("utf-8"),
    "dt":"2021-02-27 20:20:20"
}
data = {
    "doc":doc
}
es.update(index="test",doc_type="all_type",id=dataid,body=data)

15bddedc9a4ee594.jpg

删除数据

删除刚刚插入的数据

from elasticsearch import Elasticsearch

# connect
es = Elasticsearch(host="192.168.1.168",port=9200,timeout=60)

# delete
dataid = "7m4t5HcB-GtPtjsRaLCT"
es.delete(index="test",doc_type="all_type",id=dataid)

全文搜索

现在福哥往test索引里面插入多条数据,然后对它们进行全文匹配搜索

from elasticsearch import Elasticsearch

# connect
es = Elasticsearch(host="192.168.2.168",port=9200,timeout=60)

# query
query = {
    "query":{
        "bool":{
            "must":[
                {"match":{"label":{
                        "query": "福".decode("gbk").encode("utf-8")
                    }}},
            ]
        }
    }
}
results = es.search(index="test",doc_type="all_type",body=query)
print ("查询到:" + str(results['hits']['total']) + "结果")
for result in results['hits']['hits']:
    id = result['_id']
    data = result['_source']
    print ("[" + id + "] " + str(data['id']) + "," + data['label'] + "," + data['dt'])

dbbb1a7389b57b68.jpg

总结

我们今天学习了elasticsearch的操作的方法,大家会发现福哥在这里只是介绍了使用Python对ElasticSearch数据库进行基本的增、删、改、查操作的技巧,并没有讲述elasticsearch的复杂查询技巧,为什么呢?

因为福哥会在后面开发搜索引擎项目的时候,一点一点地教大家怎么玩转elasticsearch的。