我在使用 ElasticSearch 和 Rails 时遇到了问题,由于 attr_protected,一些数据没有被正确索引。Elastic Search 将索引数据存储在哪里?检查实际的索引数据是否错误会很有用。
检查映射Tire.index('models').mapping
没有帮助,该字段已列出。
我在使用 ElasticSearch 和 Rails 时遇到了问题,由于 attr_protected,一些数据没有被正确索引。Elastic Search 将索引数据存储在哪里?检查实际的索引数据是否错误会很有用。
检查映射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
到目前为止,curl
为 Elasticsearch 编写风格命令的最简单方法是Marvel 中的 Sense 插件。
它带有源代码突出显示、漂亮的缩进和自动完成功能。
查看索引数据的最简单方法绝对是在浏览器中查看。无需下载或安装。
我将假设您的弹性搜索主机是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
输出将如下所示:
注意aliases
, 意味着我们也可以在以下位置访问索引:
http://127.0.0.1:9200/products_development
第 3 步
导航以http://127.0.0.1:9200/products_development/_search?pretty
查看您的数据:
搜索、图表、一键设置....
通过对数据进行分组来解决问题 - DrTech 的回答使用方面来管理此问题,但根据 Elasticsearch 1.0 参考将不推荐使用。
Warning
Facets are deprecated and will be removed in a future release. You are encouraged to
migrate to aggregations instead.
分面被聚合取代 -在 Elasticsearch 指南中以可访问的方式介绍 - 它将示例加载到意义中。.
解决方案是相同的,除了聚合需要aggs
而不是facets
计数为 0,它将限制设置为最大整数 -示例代码需要 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
}
}
}
}
这是用于测试它的 Sense 代码 - 房屋索引示例,具有占用者类型和字段 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
}
}
}
}
显示相关聚合代码的响应。索引中有两个键,John 和 Mark。
....
"aggregations": {
"indexed_occupier_names": {
"buckets": [
{
"key": "john",
"doc_count": 2 <= 2 documents matching
},
{
"key": "mark",
"doc_count": 1 <= 1 document matching
}
]
}
}
....
一个对我调试 ElasticSearch 有很大帮助的工具是ElasticHQ。基本上,它是一个带有一些 JavaScript 的 HTML 文件。无需在任何地方安装,更不用说在 ES 本身中安装:只需下载它,解压缩 int 并使用浏览器打开 HTML 文件。
不确定它是否是 ES 重度用户的最佳工具。然而,对于急于查看条目的人来说,这真的很实用。
Kibana 也是一个很好的解决方案。它是 Elastic 的数据可视化平台。如果安装了它,它会默认在 5601 端口上运行。
在它提供的许多东西中。它有“开发工具”,我们可以在其中进行调试。
例如,您可以使用命令在此处检查可用索引
GET /_cat/indices
如果您使用的是 Google Chrome,那么您可以简单地使用这个名为 Sense 的扩展程序,如果您使用 Marvel,它也是一个工具。
https://chrome.google.com/webstore/detail/sense-beta/lhjgkmllcaadmopgmanpapmpjgmfcfig
遵循@JanKlimo 示例,在终端上您所要做的就是:
查看所有索引:
$ 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'