弹性search:如何查看索引数据

我在ElasticSearch和Rails中遇到了一些问题,其中一些数据由于attr_protected而没有正确索引。 Elastic Search存储索引数据的位置? 检查实际索引的数据是否有误是很有用的。

使用Tire.index('models').mapping检查Tire.index('models').mapping不会有帮助,该字段将被列出。

探索您的ElasticSearch群集的最简单方法可能是使用elasticsearch -head 。

你可以通过下面的方法安装它:

 cd elasticsearch/ ./bin/plugin -install mobz/elasticsearch-head 

然后(假设ElasticSearch已经在本地机器上运行),打开一个浏览器窗口来:

http://localhost:9200/_plugin/head/

或者,你可以在命令行中使用curl ,例如:

检查索引的映射:

 curl -XGET 'http://127.0.0.1:9200/my_index/_mapping?pretty=1' 

获取一些示例文档:

 curl -XGET 'http://127.0.0.1:9200/my_index/_search?pretty=1' 

查看存储在特定字段中的实际术语(即如何分析该字段):

 curl -XGET 'http://127.0.0.1:9200/my_index/_search?pretty=1' -d ' { "facets" : { "my_terms" : { "terms" : { "size" : 50, "field" : "foo" } } } } 

更多可在这里: http : //www.elasticsearch.org/guide

更新: 奇迹插件在奇迹

到目前为止,为Elasticsearch编写curl风格命令最简单的方法就是Marvel的Sense插件 。

它来源高亮,漂亮的缩进和自动完成。

注意: Sense最初是一个独立的chrome插件,但现在是Marvel项目的一部分 。

查看索引数据的最简单方法是在浏览器中查看它。 无需下载或安装。

我将假设你的elasticsearch主机是http://127.0.0.1:9200

步骤1

导航到http://127.0.0.1:9200/_cat/indices?v列出您的索引。 你会看到这样的东西:

在这里输入图像说明

第2步

尝试访问所需的索引: http://127.0.0.1:9200/products_development_20160517164519304 : http://127.0.0.1:9200/products_development_20160517164519304 : http://127.0.0.1:9200/products_development_20160517164519304

输出结果如下所示:

在这里输入图像说明

注意aliases ,这意味着我们可以访问索引: http://127.0.0.1:9200/products_development : http://127.0.0.1:9200/products_development : http://127.0.0.1:9200/products_development

第3步

导航到http://127.0.0.1:9200/products_development/_search?pretty=1查看您的数据:

在这里输入图像说明

ElasticSearch数据浏览器

search,图表,一键安装….

一个帮助我debuggingElasticSearch的工具是ElasticHQ 。 基本上,它是一个带有一些JavaScript的HTML文件。 无需在任何地方安装,更不用说ES本身:只需下载它,解压缩int并用浏览器打开HTML文件。

不确定这是ES重量级用户的最佳工具。 然而,谁急于看到参赛作品是非常实际的。

聚合解决scheme

通过对数据进行分组来解决问题 – DrTech的答案在pipe理这个方面使用了方面,但根据Elasticsearch 1.0的参考文献将不再使用。

 Warning Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead. 

方面被集合取代 – 在Elasticsearch指南中以一种可访问的方式引入 – 从一个意义上加载一个例子。 。

短解决scheme

解决scheme是相同的,除了聚合需要aggs而不是facets和计数为0,其将限制设置为max integer – 示例代码需要Marvel插件

 # Basic aggregation GET /houses/occupier/_search?search_type=count { "aggs" : { "indexed_occupier_names" : { <= Whatever you want this to be "terms" : { "field" : "first_name", <= Name of the field you want to aggregate "size" : 0 } } } } 

完整解决scheme

这是testing它的意义代码 – 一个房屋索引的例子,占用types和一个字段first_name:

 DELETE /houses # Index example docs POST /houses/occupier/_bulk { "index": {}} { "first_name": "john" } { "index": {}} { "first_name": "john" } { "index": {}} { "first_name": "mark" } # Basic aggregation GET /houses/occupier/_search?search_type=count { "aggs" : { "indexed_occupier_names" : { "terms" : { "field" : "first_name", "size" : 0 } } } } 

响应

显示相关汇总代码的响应。 索引中有两个键,约翰和马克。

  .... "aggregations": { "indexed_occupier_names": { "buckets": [ { "key": "john", "doc_count": 2 <= 2 documents matching }, { "key": "mark", "doc_count": 1 <= 1 document matching } ] } } .... 

如果您使用的是谷歌浏览器,那么你可以简单地使用这个扩展命名为Sense它也是一个工具,如果你使用奇迹。

https://chrome.google.com/webstore/detail/sense-beta/lhjgkmllcaadmopgmanpapmpjgmfcfig

以@JanKlimo为例,在terminal上你所要做的就是:

看到所有的索引: $ curl -XGET 'http://127.0.0.1:9200/_cat/indices?v' : $ curl -XGET 'http://127.0.0.1:9200/_cat/indices?v'

查看索引的内容products_development_20160517164519304$ curl -XGET 'http://127.0.0.1:9200/products_development_20160517164519304/_search?pretty=1' : $ curl -XGET 'http://127.0.0.1:9200/products_development_20160517164519304/_search?pretty=1' products_development_20160517164519304 / $ curl -XGET 'http://127.0.0.1:9200/products_development_20160517164519304/_search?pretty=1'