108

我在使用 ElasticSearch 和 Rails 时遇到了问题,由于 attr_protected,一些数据没有被正确索引。Elastic Search 将索引数据存储在哪里?检查实际的索引数据是否错误会很有用。

检查映射Tire.index('models').mapping没有帮助,该字段已列出。

4

8 回答 8

175

探索 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

更新: Marvel中的 Sense 插件

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

它带有源代码突出显示、漂亮的缩进和自动完成功能。

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

于 2012-01-22T11:15:42.760 回答
52

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

我将假设您的弹性搜索主机是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查看您的数据:

在此处输入图像描述

于 2016-05-17T10:41:26.660 回答
11

ElasticSearch 数据浏览器

搜索、图表、一键设置....

于 2012-12-07T11:10:01.537 回答
5

聚合解决方案

通过对数据进行分组来解决问题 - 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
            }
         ]
      }
   }
   ....
于 2014-07-06T16:36:03.517 回答
4

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

不确定它是否是 ES 重度用户的最佳工具。然而,对于急于查看条目的人来说,这真的很实用。

于 2016-03-15T19:11:17.513 回答
2

Kibana 也是一个很好的解决方案。它是 Elastic 的数据可视化平台。如果安装了它,它会默认在 5601 端口上运行。

在它提供的许多东西中。它有“开发工具”,我们可以在其中进行调试。

例如,您可以使用命令在此处检查可用索引

GET /_cat/indices
于 2019-03-23T10:48:48.260 回答
1

如果您使用的是 Google Chrome,那么您可以简单地使用这个名为 Sense 的扩展程序,如果您使用 Marvel,它也是一个工具。

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

于 2016-07-30T13:51:46.407 回答
1

遵循@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'

于 2016-09-09T22:39:17.067 回答