ES安装
直接去elastic官网下载,解压即用,无需多说。
进入根目录后,运行如下命令启动es,当然你也可以进入bin
目录运行。
./bin/elasticsearch
想停止运行就直接ctrl+c
。config/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"
}
}
}'
- 索引数据
其实就是添加数据(记录),命令那个数字1
是id
,如果不写,就会随机给个串。id
如果相同了,就会变成更新数据。
curl -XPOST http://localhost:9200/myindex/mytype/1 -H 'Content-Type:application/json' -d'
{
"mytitle": "一篇好文章",
"mycontent": "内容也不错",
"mykeywords": "关键 词"
}'
这个命令是删除id
为1
的数据。
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)
好了,够用了。
网友评论