美文网首页
Python简单使用elasticsearch

Python简单使用elasticsearch

作者: 赤色要塞满了 | 来源:发表于2018-07-31 18:05 被阅读0次

ES安装


直接去elastic官网下载,解压即用,无需多说。
进入根目录后,运行如下命令启动es,当然你也可以进入bin目录运行。

./bin/elasticsearch

想停止运行就直接ctrl+cconfig/elasticsearch.yml文件可以对其进行一些设置,自行研究。

ES常用命令


  • 看看是否启动正常
curl localhost:9200

有返回就一般没啥问题。

  • 查看所有index

index就是索引,或者理解为数据库、表也可以,里面是一条条结构相同的数据(记录)。

curl -X GET 'http://localhost:9200/_cat/indices?v'

现在应该是一条都没有,只显示出索引的参数字段。

  • 查看所有type

type相当于对数据的分组,不过由于一个index只有一个type,并且以后可能要摒弃type,所以也别研究了,知道就好。

curl 'localhost:9200/_mapping?pretty=true'
  • 建立index

index名最好全小写字母,别找事。

curl -XPUT http://localhost:9200/myindex
  • 删除index
curl -XDELETE http://localhost:9200/myindex
  • 建立type

my打头的需要自己写,我也不知道为啥这么啰嗦,analyzer是用于中文分词的插件IK的。去IK的github下载安装,注意版本一定要对应,解压后的文件扔在plugins\ik目录下,不要再加深一层目录。

curl -XPOST http://localhost:9200/myindex/mytype/_mapping -H 'Content-Type:application/json' -d'
{
    "properties":{
        "mytitle":{
            "type":"text",
            "analyzer":"ik_max_word",
            "search_analyzer":"ik_max_word"
        },
        "mycontent":{
            "type":"text",
            "analyzer":"ik_max_word",
            "search_analyzer":"ik_max_word"
        },
        "mykeywords":{
            "type":"text",
            "analyzer":"ik_max_word",
            "search_analyzer":"ik_max_word"
        }
    }
}'
  • 索引数据

其实就是添加数据(记录),命令那个数字1id,如果不写,就会随机给个串。id如果相同了,就会变成更新数据。

curl -XPOST http://localhost:9200/myindex/mytype/1 -H 'Content-Type:application/json' -d'
{
  "mytitle": "一篇好文章",
  "mycontent": "内容也不错",
  "mykeywords": "关键 词"
}' 

这个命令是删除id1的数据。

curl -X DELETE 'localhost:9200/myindex/mytype/1'
  • 查看所有数据
curl 'localhost:9200/myindex/mytype/_search'
  • 查询
curl -XPOST http://localhost:9200/myindex/mytype/_search  -H 'Content-Type:application/json' -d'
{
  "query" : { "match" : { "mykeywords" : "关键" }}
}'

也可以加入其它参数,比如返回的序号什么的。匹配多个关键词可以用空格隔开。详细使用看官网手册。

Python调用ES


首先是安装模块。

pip install elasticsearch

然后是大概的常用语句,跟之前的命令基本能对上:

from elasticsearch import Elasticsearch
es = Elasticsearch()
mymapping = {
    'mappings': {
        'mytype': {
            'properties': {
                'mytitle': {
                    'type': 'text',
                    'analyzer': 'ik_max_word',
                    'search_analyzer': 'ik_max_word'
                },
                'mycontent': {
                    'type': 'text',
                    'analyzer': 'ik_max_word',
                    'search_analyzer': 'ik_max_word'
                },
                'mykeywords': {
                    'type': 'text',
                    'analyzer': 'ik_max_word',
                    'search_analyzer': 'ik_max_word'
                }

            }
        }
    }
}
if es.indices.exists(index='myindex') is not True:
    res = es.indices.create(index='myindex', body=mymapping)
es.index(index="myindex", doc_type="mytype", id=1, body={"mytitle": "好文章", "mycontent": "内容也好", "keywords": , "mykeywords": "关键 词语"} )
es.delete(index="myindex", doc_type="mytype", id=1)
es.get(index="myindex", doc_type="mytype", id=1)
mymatch = {
    "query": {
        "match": {
            "mykeywords": "关键"
        }
    }
}
es.search(index="myindex", doc_type="mytype", body=mymatch)

好了,够用了。

参考


阮一峰 - 全文搜索引擎 Elasticsearch 入门教程
Python 操作 ElasticSearch

相关文章

网友评论

      本文标题:Python简单使用elasticsearch

      本文链接:https://www.haomeiwen.com/subject/bcygmftx.html