elasticsearch的基本用法(转载)
本文出自:http://blog.csdn.net/feelig/article/details/8499614
最大的特点:
1. 数据库的 database, 就是 index
2. 数据库的 table, 就是 tag
3. 不要使用browser, 使用curl来进行客户端操作. 否则会出现 java heap ooxx...
curl: -X 后面跟 RESTful : GET, POST ...
-d 后面跟数据。 (d = data to send)
1. create:
指定 ID 来建立新记录。 (貌似PUT, POST都可以)
$ curl -XPOST localhost:9200/films/md/2 -d '
{ "name":"hei yi ren", "tag": "good"}'
使用自动生成的 ID 建立新纪录:
$ curl -XPOST localhost:9200/films/md -d '
{ "name":"ma da jia si jia3", "tag": "good"}'
2. 查询:
2.1 查询所有的 index, type:
$ curl localhost:9200/_search?pretty=true
2.2 查询某个index下所有的type:
$ curl localhost:9200/films/_search
2.3 查询某个index 下, 某个 type下所有的记录:
$ curl localhost:9200/films/md/_search?pretty=true
2.4 带有参数的查询:
$ curl localhost:9200/films/md/_search?q=tag:good
{"took":7,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":2,"max_score":1.0,"hits":[{"_index":"film","_type":"md","_id":"2","_score":1.0,
"_source" :
{ "name":"hei yi ren", "tag": "good"}},{"_index":"film","_type":"md","_id":"1","_score":0.30685282, "_source" :
{ "name":"ma da jia si jia", "tag": "good"}}]}}
2.5 使用JSON参数的查询: (注意 query 和 term 关键字)
$ curl localhost:9200/film/_search -d '
{"query" : { "term": { "tag":"bad"}}}'
3. update
$ curl -XPUT localhost:9200/films/md/1 -d { ...(data)... }
4. 删除。 删除所有的:
$ curl -XDELETE localhost:9200/films
角色关系对照
elasticsearch 跟 MySQL 中定义资料格式的角色关系对照表如下
MySQL elasticsearch
database index
table type
table schema mapping
row document
field field
3.索引映射
$ curl -XPUT http://localhost:9200/test-index
#创建Mapping
$ curl -XPUT http://localhost:9200/test-index/test-type/_mapping -d '{
"properties" : {
"name" : { "type" : "string" }
}
}'
def indexmapping():
"""索引映射"""
conn = ES('127.0.0.1:9200')
conn.debug_dump = True
try:
#删除索引
conn.delete_index("test-index")
except:
pass
#创建索引
conn.create_index("test-index")
mapping = {
u'id': {'store': 'yes',
'type': u'integer'},
u'author': {'boost': 1.0,
'index': 'not_analyzed',
'store': 'yes',
'type': u'string'},
u'published': {'boost': 1.0,
'index': 'not_analyzed',
'store': 'yes',
'type': u'datetime'},
u'url': {'store': 'yes',
'type': u'string'},
u'title': {'boost': 1.0,
'index': 'analyzed',
'store': 'yes',
'type': u'string'},
u'content': {'boost': 1.0,
'index': 'analyzed',
'store': 'yes',
'type': u'string',
"term_vector" : "with_positions_offsets"}
}
#索引映射
conn.put_mapping("test-type", {'properties':mapping}, ["test-index"])
return "索引映射"
4.索引
$ curl -XPUT http://localhost:9200/test-index/test-type/1 -d '{
"user": "kimchy",
"post_date": "2009-11-15T13:12:00",
"message": "Trying out elasticsearch, so far so good?"
}'
#获取
$ curl -XGET http://localhost:9200/test-index/test-type/1
#删除
$ curl -XDELETE 'http://localhost:9200/test-index/test-type/1'
def indexTest():
"""索引测试"""
conn = ES('127.0.0.1:9200')
for item in Data().getData():
#添加索引
conn.index(item,"test-index", "test-type",item['id'])
#索引优化
conn.optimize(["test-index"])
#删除索引内容
conn.delete("test-index", "test-type", 2668090)
#更新索引内容
model = conn.get("test-index", "test-type", 2667371)
model["title"]="标题修改测试"
conn.update(model,"test-index", "test-type",2667371)
#刷新索引
conn.refresh(["test-index"])
q = MatchAllQuery()
results = conn.search(query = q,indices="test-index",doc_types="test-type")
# for r in results:
# print r
return template('default.tpl', list=results,count=len(results))
5.搜索
$ curl -XGET http://localhost:9200/test-index/test-type/_search?q=user:kimchy
#query DSL方式查询
$ curl -XGET http://localhost:9200/test-index/test-type/_search -d '{
"query" : {
"term" : { "user": "kimchy" }
}
}'
#query DSL方式查询
$ curl -XGET http://localhost:9200/test-index/_search?pretty=true -d '{
"query" : {
"range" : {
"post_date" : {
"from" : "2009-11-15T13:00:00",
"to" : "2009-11-15T14:30:00"
}
}
}
}'
#查找全部索引内容
$ curl -XGET http://localhost:9200/test-index/test-type/_search?pretty=true
@route('/search/<searchkey>')
def search(searchkey=u"关键算法"):
"""索引搜索"""
conn = ES('127.0.0.1:9200')
#TextQuery会对searchkey进行分词
qtitle = TextQuery("title", searchkey)
qcontent = TextQuery("content", searchkey)
#发布时间大于"2012-9-2 22:00:00"
qpublished=RangeQuery(ESRangeOp("published", "gt", datetime(2012, 9,2, 22, 0, 0)))
h = HighLighter(['<b>'], ['</b>'], fragment_size=500)
#多字段搜索(must=>and,should=>or),高亮,结果截取(分页),排序
q = Search(BoolQuery(must=[qpublished],should=[qtitle,qcontent]),highlight=h, start=0, size=3, sort={'id': {'order': 'asc'}})
q.add_highlight("title")
q.add_highlight("content")
results = conn.search(query = q,indices="test-index",doc_types="test-type")
list=[]
for r in results:
if(r._meta.highlight.has_key("title")):
r['title']=r._meta.highlight[u"title"][0]
if(r._meta.highlight.has_key("content")):
r['content']=r._meta.highlight[u"content"][0]
list.append(r)
return template('search.tpl', list=list,count=results.total)
6.设置
$ curl -XPUT http://localhost:9200/elasticsearch/ -d '{
"settings" : {
"number_of_shards" : 2,
"number_of_replicas" : 3
}
}'
7.其他
curl -XGET 'http://localhost:9200/test-index/_analyze?text=中华人民共和国'
elasticsearch的基本用法(转载)的更多相关文章
- C# DataSet与DataTable的区别和用法 ---转载
C# DataSet与DataTable的区别和用法 转载:https://www.cnblogs.com/liuyi-li/p/6340411.html DataSet是数据集,DataTable是 ...
- ElasticSearch的基本用法与集群搭建
一.简介 ElasticSearch和Solr都是基于Lucene的搜索引擎,不过ElasticSearch天生支持分布式,而Solr是4.0版本后的SolrCloud才是分布式版本,Solr的分布式 ...
- 移动端下拉刷新,iScroll.js用法(转载)
本文转载自: iScroll.js 用法参考 (share)
- ES6 Promise 用法转载
Promise是一个构造函数,自己身上有all.reject.resolve这几个眼熟的方法,原型上有then.catch等同样很眼熟的方法. 那就new一个 var p = new Promise( ...
- python---map 用法 [转载]
map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 1.当seq只 ...
- Elasticsearch批量操作API用法介绍
Elasticsearch的Bulk API允许批量提交index和delete请求,有如下两种用法: 用法1 BulkRequestBuilder requestBuilder = client.p ...
- SQL中CASE 的用法 转载
sql语言中有没有类似C语言中的switch case的语句?? 没有,用case when 来代替就行了. 例如,下面的语句显示中文年月 select getdat ...
- ElasticSearch的基本用法与集群搭建 good
一.简介 ElasticSearch和Solr都是基于Lucene的搜索引擎,不过ElasticSearch天生支持分布式,而Solr是4.0版本后的SolrCloud才是分布式版本,Solr的分布式 ...
- AutoMapper用法 转载https://www.cnblogs.com/youring2/p/automapper.html
AutoMapper是对象到对象的映射工具.在完成映射规则之后,AutoMapper可以将源对象转换为目标对象. 配置AutoMapper映射规则 AutoMapper是基于约定的,因此在实用映射之前 ...
随机推荐
- 2015ICPC chanchun HDU 5534 (树形题转换完全背包)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题意:给你n个点,让你加上n-1条边使他变成一棵树,题目首先给你a[1] a[2].....a[n- ...
- [NOIP2016]天天爱跑步 题解(树上差分) (码长短跑的快)
Description 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要 玩家每天按时上线,完成打卡任务.这个游戏的地图 ...
- Spring源码剖析3:Spring IOC容器的加载过程
本文转自五月的仓颉 https://www.cnblogs.com/xrq730 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https ...
- Spring定时器的使用方法
Spring定时器主要通过Quartz Cron表达式来实现定时任务,注解用法如下: # 每月的最后1天 @Scheduled(cron = "0 0 18 28–31 * ?") ...
- mac 安装brew mac安装expect mac一键登录服务器脚本
mac 安装brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ma ...
- 谈谈-Android Studio 调试功能
先编译好要调试的程序. 1.设置断点 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可. 2.开启调试会话 点击红色箭头指向的小虫子,开始进入调试. IDE下方出现Debug视图,红色的箭头指 ...
- Quartus II 使用 modelsim 仿真
转自:http://www.cnblogs.com/emouse/archive/2012/07/08/2581223.html Quartus 中调用modelsim的流程 1. 设定仿真工具 as ...
- autocad 2015 破解方法
下载 http://trial.autodesk.com/SWDLDNET4/2015/ACD/DLM/AutoCAD_2015_Simplified_Chinese_Win_64bit_dlm.sf ...
- Nginx学习——location和rewrite
location语法: location [=|~|~*|^~] /uri/ { … } 记住以下即可: 完全匹配(=) 无正则普通匹配(^~)(^ 表示“非”,~ 表示“正则”,字符意思是:不要继续 ...
- hadoop命令行
持续更新中................ 1. 设置目录配额 命令:hadoop dfsadmin -setSpaceQuota 样例:hadoop dfsadmin -setSpaceQuota ...