1

ESに(logstashによって)保存されたドキュメントがいくつかあります。ES をクエリすると、結果が正しく表示されません。

最初のクエリ (以下のクエリと結果を参照) は、フィールドを含まないドキュメントのみregionを返すことが想定されています。

さらに、最初の query の結果に基づいて、明らかに field を含むドキュメントがありますが、region(少なくとも) を含むドキュメントを返す必要がある 2 番目のクエリの結果にはドキュメントregion=INが含まれていません。

  • クエリに何か問題がありますか?
  • 問題がどこにあるのかを調べるにはどうすればよいですか? (ES ログには、これらのクエリに関連するものは何もありません)

クエリは次のとおりです。

curl -X GET 'http://localhost:9200/logstash*/_search?pretty' -d '{
    "query" : {
        "match_all" : {}
    },
    filter : {
        "and" : [
            { "term" : { "type" : "xsys" } },
            { "missing" : { "field" : "region" } }
        ]
    }, size: 2
}'

そして結果:

{
  "took" : 40,
  "timed_out" : false,
  "_shards" : {
    "total" : 90,
    "successful" : 90,
    "failed" : 0
  },
  "hits" : {
    "total" : 5747,
    "max_score" : 1.0,
    "hits" : [ {
      "_index" : "logstash-2013.09.28",
      "_type" : "logs",
      "_id" : "UMrz9bwKQgCq__TwBT0WmQ",
      "_score" : 1.0, 
      "_source" : {
        .....
        "type":"xsys",
        ....
        "region":"IN",
        }
    }, { ....
    } ]
  }
}

さらに、次のクエリの結果:

curl -X GET 'http://localhost:9200/logstash*/_search?pretty' -d '{
    "query" : { "match_all" : {} },
    filter : { "term" : { "region" : "IN" } },
    size: 1
}'

は:

{
  "took" : 55,
  "timed_out" : false,
  "_shards" : {
    "total" : 90,
    "successful" : 90,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }

次のマッピングが使用されます。

curl -XPUT http://localhost:9200/_template/logstash_per_index -d '
{
    "template": "logstash*",
    "settings": {
        "index.query.default_field": "message",
        "index.cache.field.type": "soft",
        "index.store.compress.stored": true
    },
    "mappings": {
        "_default_": {
            "_all": { "enabled": false },
            "properties": {
                "message": { "type": "string", "index": "analyzed" },
                "@version": { "type": "string", "index": "not_analyzed" },
                "@timestamp": { "type": "date", "index": "not_analyzed" },
                "type": { "type": "string", "index": "not_analyzed" },
                ....
                "region": { "type": "string", "index": "not_analyzed" },
                ...
            }
        }
    }
}'

マッピング (ES が返したもの - curl -XGET 'http://localhost:9200/logstash-2013.09.28/_mapping):

{
   "logstash-2013.09.28":{
      "logs":{
         "_all":{
            "enabled":false
         },
         "properties":{
            "@timestamp":{
               "type":"date",
               "format":"dateOptionalTime"
            },
            "@version":{
               "type":"string",
               "index":"not_analyzed",
               "omit_norms":true,
               "index_options":"docs"
            },
            "message":{
               "type":"string"
            },
            "region":{
               "type":"string"
            },
            "type":{
               "type":"string",
               "index":"not_analyzed",
               "omit_norms":true,
               "index_options":"docs"
            }
         }
      },
      "_default_":{
         "_all":{
            "enabled":false
         },
         "properties":{
            "@timestamp":{
               "type":"date",
               "format":"dateOptionalTime"
            },
            "@version":{
               "type":"string",
               "index":"not_analyzed",
               "omit_norms":true,
               "index_options":"docs"
            },
            "message":{
               "type":"string"
            },
            "type":{
               "type":"string",
               "index":"not_analyzed",
               "omit_norms":true,
               "index_options":"docs"
            }
         }
      }
   }
}
4

0 に答える 0