Elastic Search:如何查看索引数据

Posted

技术标签:

【中文标题】Elastic Search:如何查看索引数据【英文标题】:Elastic Search: how to see the indexed data 【发布时间】:2012-02-15 19:23:31 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

到目前为止,为 Elasticsearch 编写 curl 样式命令的最简单方法是 Sense plugin in Marvel。

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

注意:Sense was originally a standalone chrome plugin but is now part of the Marvel project。

【讨论】:

在 Robin 这样的情况下,我认为只需使用 curl curl localhost:9200/my_index/_search?q=*&pretty 检查数据就足够了——假设索引中的文档集有限。 感谢您推荐 Sense 插件。看起来很棒。 Sense chrome 插件非常适合使用 REST API。 _head 非常适合检查! Facets are now deprecated 谢谢,这真的很有用。顺便说一句,语法是 ./bin/plugin install mobz/elasticsearch-head 。即您不需要安装前的连字符。【参考方案2】:

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

我假设您的 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

输出将如下所示:

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

第 3 步

导航至http://127.0.0.1:9200/products_development/_search?pretty 以查看您的数据:

【讨论】:

谢谢 Jan,这正是我想要的。 我只是有一个问题,http://127.0.0.1:9200/products_development/_search?pretty=1 是否只显示示例数据?它似乎没有显示所有数据 文档 here 声明搜索结果默认为前 10 个文档(查找 hits.hits 这根本不显示索引数据。它只显示您的源数据——与您输入的内容完全相同。不回答 OP 的问题。 ?漂亮就够了,不用加"=1"【参考方案3】:

ElasticSearch data browser

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

【讨论】:

谢谢,我去看看:)【参考方案4】:

聚合解决方案

通过对数据进行分组来解决问题 - DrTech 的回答使用方面来管理这个问题,但是,will be deprecated according to Elasticsearch 1.0 reference.

Warning

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

分面被聚合替换 - Introduced in an accessible manner in the Elasticsearch Guide - which loads an example into sense.。

短解

除了聚合需要aggs 而不是facets 和count of 0 which sets limit to max integer - the example code requires the Marvel Plugin,解决方案是相同的

# 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
            
         ]
      
   
   ....

【讨论】:

【参考方案5】:

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

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

【讨论】:

【参考方案6】:

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

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

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

GET /_cat/indices

【讨论】:

【参考方案7】:

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

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

【讨论】:

【参考方案8】:

按照@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'

【讨论】:

以上是关于Elastic Search:如何查看索引数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cloud Function 将数据从 Firebase Firestore 索引到 Elastic App Search?

elastic search 索引

tpot从elastic search拉攻击数据

微服务 分布式搜索引擎 Elastic Search RestAPI

如何在预先存在的 SQL 数据库之上使用 Elastic Search?

Elastic Search 的原理