经常使用的ElasticSearch查询(数据获取)
由于ElasticSearch的手册(英语版)非常详细,请参考该手册。手册官网链接:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
暂且先简单地理解一下,我会在比较MySQL的SQL语句的同时进行总结。
环境
-
- CentOS 7.1
-
- ElasticSearch 5.6.2
- ※ElasticSearch 6.xでは、curlに「 -H ‘Content-Type: application/json’」を付ける必要があります。
章节表格
-
- インデックス(マッピング)操作
-
- ドキュメント(レコード)操作
-
- データ取得
-
- スナップショット
- elasticdump(インポート/エクスポート)
取得数据
由于无法仅删除类型,因此对于ElasticSearch来说,最好将索引和类型保持一对一的关系(?)。
通常,在发送查询时可以省略类型。
请将以下查询的类型设为”hoge_type”。
关于Bool Query
Elasticsearch 2.0起,and查询和or查询全部弃用,取而代之的是bool查询被推荐使用。Bool查询用于组合多个查询(即使用AND、OR、NOT连接)。
■ 优化响应格式
通常,回应会以内联的JSON格式输出,但是添加pretty参数后,输出会以整齐的形式呈现。
- prettyパラメータを付けない場合
$ curl -XGET http://localhost:9200/hoge_index/_search
{"took":0,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":0,"max_score":null,"hits":[]}}
- prettyパラメータを付けた場合
$ curl -XGET http://localhost:9200/hoge_index/_search?pretty
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 0,
"max_score" : null,
"hits" : [ ]
}
}
■ 不指定条件获取数据
虽然可以获取全部数据,但默认只获取30个。
curl -XGET http://localhost:9200/hoge_index/_search
SELECT * FROM `hoge_index` . `hoge_type`
■ 指定初始位置(offset)和获取数量(limit)
curl -XGET http://localhost:9200/hoge_index/_search?from=5&size=1
SELECT * FROM `hoge_index` . `hoge_type`
LIMIT 5, 1,
■ 随机获取
curl -XGET 'http://localhost:9200/hoge_index/_search?size=1' -d '{
"query": {
"function_score" : {
"query" : {
"match_all": {}
},
"random_score" : {}
}
}
}'
SELECT * FROM `hoge_index` . `hoge_type`
ORDER BY rand()
LIMIT 0, 1,
■ 指定复杂的条件来获取数据(第一部分)
对不起,稍后会进行描述。
参考
-
- elasticsearch-php documents
https://developers.eure.jp/tech/elasticsearch_search_query/ (search query)
http://qiita.com/jtodo/items/be053be4aa704e6c57d0 (複雑なsearch query)
http://qiita.com/vanhuyz/items/04a6871ae5f53ba5a97f (複雑なsearch query)
http://qiita.com/jtodo/items/be053be4aa704e6c57d0 (Group By)
https://qiita.com/kieaiaarh/items/5ea4e8a188bd9814000d (SQLと対比)
http://x1.inkenkun.com/archives/487
https://qiita.com/vanhuyz/items/04a6871ae5f53ba5a97f (bool queryについて)