经常使用的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连接)。

クエリ説明mustANDとして使います。小クエリは総合スコアに影響を与えます。filtermustと同じくANDです。ただし、スコアは無視されます(総合スコアに影響を与えません)。shouldORとして使えます。 minimum_should_matchパラメータで最低マッチする条項の数が指定できます。must_notNOTです。

■ 优化响应格式

通常,回应会以内联的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について)

广告
将在 10 秒后关闭
bannerAds