ElasticSearch:如何查看索引数据

aemubtdh  于 2023-04-20  发布在  ElasticSearch
关注(0)|答案(8)|浏览(182)

我在使用ElasticSearch和Rails时遇到了一个问题,由于attr_protected的原因,一些数据没有被正确索引。Elastic Search将索引数据存储在哪里?检查实际索引数据是否错误会很有用。
使用Tire.index('models').mapping检查Map没有帮助,该字段已列出。

c3frrgcw

c3frrgcw1#

探索ElasticSearch集群的最简单方法可能是使用elasticsearch-head
您可以通过执行以下操作来安装它:

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

然后(假设ElasticSearch已经在您的本地机器上运行),打开一个浏览器窗口:
http://localhost:9200/_plugin/head/
或者,您可以从命令行使用curl,例如:
检查索引的Map:

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中的感知插件

到目前为止,为Elasticsearch编写curl风格命令的最简单方法是Sense plugin in Marvel
它带有源代码突出显示,漂亮的缩进和自动完成。
注:Sense was originally a standalone chrome plugin but is now part of the Marvel project

hmmo2u0o

hmmo2u0o2#

查看索引数据的最简单方法是在浏览器中查看。无需下载或安装。
我假设你的elasticsearch主机是http://127.0.0.1:9200

第一步

导航到http://127.0.0.1:9200/_cat/indices?v以列出索引。您将看到如下内容:

第二步

尝试访问所需的索引: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/_search?pretty以查看您的数据:

m1m5dgzv

m1m5dgzv4#

聚合解决方案

通过对数据进行分组来解决问题- 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
            }
         ]
      }
   }
   ....
bakd9h0s

bakd9h0s5#

一个对我调试ElasticSearch很有帮助的工具是ElasticHQ。基本上,它是一个带有一些JavaScript的HTML文件。不需要安装在任何地方,更不用说ES本身了:只需下载它,解压缩int并使用浏览器打开HTML文件。
不确定它是否是ES重度用户的最佳工具。然而,对于那些急于查看条目的人来说,它确实很实用。

np8igboo

np8igboo6#

Kibana也是一个很好的解决方案。它是Elastic的数据可视化平台。如果安装了它,默认运行在端口5601上。
在它提供的许多东西中。它有“开发工具”,我们可以在那里做你的调试。
例如,您可以在这里使用以下命令检查可用索引

GET /_cat/indices
7uhlpewt

7uhlpewt7#

如果你使用的是谷歌浏览器,那么你可以简单地使用这个名为Sense的扩展程序,如果你使用Marvel,它也是一个工具。
https://chrome.google.com/webstore/detail/sense-beta/lhjgkmllcaadmopgmanpapmpjgmfcfig

zysjyyx4

zysjyyx48#

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

相关问题