前提:需要安装JAVA。www.java.com
下载es,选择对应版本,本文为MACOS:https://www.elastic.co/cn/downloads/elasticsearch
选择自己的运行路径,解压,进入解压的文件夹:
tar -zxvf elasticsearch-7.4.0-darwin-x86_64.tar.gz
cd elasticsearch-7.4.0
运行:(后边加-d,后台启动)
./bin/elasticsearch
检验是否运行成功(其实上步运行不报错,应该就是运行成功)
curl http://localhost:9200/
cluster.name: test_my
node.name: node
node.master: true
node.data: true
network.host: 10.0.0.000
transport.tcp.port: 9301
http:port: 9201
discovery.zen.ping.unicast.hosts: ["10.0.0.000:9200", "10.0.0.001:9200"]
es.indices.create(inex=‘index_name’, ignore)
如果已存在,返回400
es.index(index=‘index_name’, doc_type=‘doc_name’, id=‘id_value’, body={“test”: “test”}
res = es.get(index=‘index_name’, doc_type=‘doc_name’, id=‘id_value’)
es.delete(index=‘index_name’, doc_tye=‘doc_name’, id=‘id_value’)
query = {‘query’: {‘match’: {‘test’: 'test}}}
es.delete_by_query(index=‘index_name’, body=query, doc_type=‘doc_name’)
update_by_query
todo
es.search(index=‘index_name’, doc_type=‘doc_name’)
或
body = {
'query': {
'match_all': {}
}
}
es.search(index='index_name', doc_type='type_name', body=body)
term:
body = {‘query’: {‘term’: {‘test’: ‘test’}}}
es.search(index=‘index_name’, doc_type=‘doc_name’, body=body)
terms:
body = {‘query’: {‘terms’: {'test: [‘test’, ‘a’]}}}
es.search(index=‘index_name’, doc_type=‘doc_name’, body=body)
match:
body = {‘query’: {'match’: {‘test’: 'test}}}
es.search(index=‘index_name’, ‘doc_type’: ‘doc_name’, body=body)
multi_match:
body = {‘query’: {‘multi_match’: {‘query’: ‘test’, ‘fields’: [‘test’]}}}
es.search(index=‘index_name’, doc_type=‘doc_name’, body=body)
body = {‘query’: {‘ids’: {‘type’: ‘doc_type’, ‘values’: [‘test’]}}}
es.search(index=‘index_name’, doc_type=‘doc_name’, body=body)
body = {
'query': {
'bool': {
'must': [
{
'term': {
'test': 'test'
}
},
{
'term': {
'name': 'python'
}
}
]
}
}
}
有时候会出现匹配不到,可以换term为match
es.search(index=‘index_name’, doc_type=‘doc_name’, body=body)
body = {
'query': {
'match_all': {}
}
'form': 2
'size': 4
}
es.search(index=‘index_name’, doc_type=‘doc_name’, body=body)
body = {
'query': {
'range': {
'age': {
'gte': 18,
'lte': 30
}
}
}
}
# 查询年龄大于等于18, 小于等于30的
es.search(index=‘index_name’, doc_type=‘doc_name’, body=‘body’)
body = {‘query’: {‘prefix’: {‘test’: ‘te’}}}
es.search(index=‘index_name’, doc_type=‘doc_name’, body=‘body’)
body = {‘query’: {‘wildcard’: {‘test’: ‘*st’}}}
es.search(index=‘index_name’, doc_type=‘doc_name’, body=‘body’)
body = {
'query': {
'match_all': {}
}
'sort': {
'age': { # 根据age字段升序拍讯
'order': 'asc' # asc升序,desc降序
}
}
}
es.search(index=‘index_name’, doc_type=‘doc_name’, body=‘body’)
只获取_id数据,多个条件用都会隔开
es.search(index=‘index_name’, doc_type=‘doc_name’, filter_path=[‘hits.hits._id’])
获取所有数据
es.search(index=‘index_name’, doc_type=‘doc_name’, filter_path=[‘hits.hits.*’])
es.count(index=‘index_name’, doc_type=‘doc_name’)
# 获取最小值
body = {
'query': {'match_all': {}
},
'aggs': { # 聚合查询
'min_age': { # 最小值的key
'min': { # 最小
'field': 'age' # 查询age的最小值
}
}
}
}
查询所有数据,并获取age的最小值
es.search(index=‘index_name’, doc_type=‘doc_name’, body=‘body’)
# 获取最大值
body = {
'query': {'match_all': {}
},
'aggs': { # 聚合查询
'max_age': { # 最大值的key
'max': { # 最大
'field': 'age' # 查询age的最大值
}
}
}
}
查询所有数据,并获取age的最大值
es.search(index=‘index_name’, doc_type=‘doc_name’, body=‘body’)
body = {
'query': {
'match_all': {}
},
'aggs': { # 聚合查询
'sum_age': { # 和的key
'sum': { # 和
'files': 'age' # 获取所有age的和
}
}
}
}
搜索所有的数据,并获取age的和
es.search(index=‘index_name’, doc_type=‘doc_name’, body=‘body’)
body = {
'query': {
'match_all': {}
},
'aggs': { # 聚合查询
'avg_age': { # 平均值的key
'avg': { # 平均值
'files': 'age' # 获取所有age的平均值
}
}
}
}
搜索所有的数据,并获取age的平均值
es.search(index=‘index_name’, doc_type=‘doc_name’, body=‘body’)
curl -XGET ‘http://localhost:9200/_count?pretty’ -d ’
{
“query”: {“match_all”: {}}
}
’
import datetime
import time
ts = time.time()
dt = datetime.datetime.fromtimestamp(int(ts), pytz.timezone("Asia/Shanghai"))
dt.isoformat()
1
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
sudo vim /etc/sysctl.conf
vm.max_map_count=655360
source /etc/sysctl.conf
参考:
ElasticSearch教程——基本概念及核心配置文件详解
Python-ElasticSearch,python对ES进行写入、更新、删除、搜索