弹性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'