Elastic Search : 인덱싱 된 데이터를 보는 방법


102

attr_protected로 인해 일부 데이터가 제대로 인덱싱되지 않은 ElasticSearch 및 Rails에 문제가 발생했습니다. Elastic Search는 인덱싱 된 데이터를 어디에 저장합니까? 실제 인덱싱 된 데이터가 잘못된 지 확인하는 것이 유용합니다.

로 매핑을 확인해도 Tire.index('models').mapping도움이되지 않으며 필드가 나열됩니다.

답변:


170

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 플러그인

curlElasticsearch에 대한 스타일 명령을 작성하는 가장 쉬운 방법은 MarvelSense 플러그인입니다 .

소스 강조 표시, 예쁜 들여 쓰기 및 자동 완성 기능이 함께 제공됩니다.

참고 : Sense는 원래 독립형 크롬 플러그인 이었지만 이제는 Marvel 프로젝트의 일부입니다 .


1
Robin과 같은 경우 curl localhost:9200/my_index/_search?q=*&pretty에는 인덱스에 제한된 문서 집합이 있다고 가정 하고 curl로 데이터를 검사하는 것으로 충분하다고 생각합니다 .
karmi

2
Sense 플러그인을 추천 해 주셔서 감사합니다. 멋지네요.
Venkatesh Nannan 2013 년

Chrome 용 Sense 플러그인은 REST API 사용에 적합합니다. 그리고 _head는 확인 목적으로 좋습니다!
Haywire 2014 년


감사합니다. 정말 유용했습니다. Btw 구문은 ./bin/plugin install mobz / elasticsearch-head입니다. 즉, 설치 앞에 하이픈이 필요하지 않습니다.
Paul Bartlett

40

색인 된 데이터를 보는 가장 쉬운 방법은 브라우저에서 보는 것입니다. 다운로드 나 설치가 필요하지 않습니다.

귀하의 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데이터를 보려면로 이동 하십시오.

여기에 이미지 설명 입력


3
Jan 고마워요, 제가 찾던 바로 그것입니다.
ZedTuX

질문이 있습니다. http://127.0.0.1:9200/products_development/_search?pretty=1샘플 데이터 만 표시 되나요? 모든 데이터를 표시하지 않는 것
svelandiag

1
여기 문서 에는 검색 결과가 처음 10 개 문서로 기본 설정되어 있다고 명시되어 있습니다 (검색 hits.hits)
Jan Klimo

8
인덱싱 된 데이터는 전혀 표시되지 않습니다. 입력 한 것과 똑같은 소스 데이터 만 표시됩니다. OP 질문에는 대답하지 않습니다.
hackel

1
? 꽤 충분하다 "= 1"을 추가 할 필요가 없습니다
샤이 아론


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 카운트 - 예 코드 놀라운 플러그인 필요

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

4

ElasticSearch를 디버깅하는 데 많은 도움이되는 도구는 ElasticHQ 입니다. 기본적으로 JavaScript가 포함 된 HTML 파일입니다. ES 자체는 물론 어디에도 설치할 필요가 없습니다. 다운로드하고 int 압축을 풀고 브라우저로 HTML 파일을 열기 만하면됩니다.

ES 헤비 사용자에게 가장 적합한 도구인지 확실하지 않습니다. 그러나 서둘러 항목을 보는 사람에게는 정말 실용적입니다.



1

@JanKlimo 예제에 따라 터미널에서해야 할 일은 다음과 같습니다.

모든 색인을 보려면 : $ curl -XGET 'http://127.0.0.1:9200/_cat/indices?v'

Index 내용보기 products_development_20160517164519304: $ curl -XGET 'http://127.0.0.1:9200/products_development_20160517164519304/_search?pretty=1'


1

Kibana는 또한 좋은 솔루션입니다. Elastic 용 데이터 시각화 플랫폼으로, 설치된 경우 기본적으로 포트 5601에서 실행됩니다.

그것이 제공하는 많은 것 중에서. 디버깅을 수행 할 수있는 "Dev Tools"가 있습니다.

예를 들어 여기에서 다음 명령을 사용하여 사용 가능한 색인을 확인할 수 있습니다.

GET /_cat/indices
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.