elasticsearch用法中的_meta字段?

时间:2017-05-24 09:05:43

标签: elasticsearch meta

在我的场景中,我有两个应用程序(即A,B)都会将文档推送到ES。通常在慢速日志中我们能够获得

[2016-03-23 06:43:47,231][DEBUG][index.search.slowlog.fetch] took[5.8ms], took_millis[5], types[talk], stats[], search_type[QUERY_THEN_FETCH], total_shards[5], source[{"query":{"match":{"tags":"Java"}}}], extra_source[]

假设我在ES中启用了_meta字段,是否可以在这样的慢速日志中反映字段?

[2016-03-23 06:43:47,231][DEBUG] [应用] [index.search.slowlog.fetch] took[5.8ms], took_millis[5], types[talk], stats[], search_type[QUERY_THEN_FETCH], total_shards[5], source[{"query":{"match":{"tags":"Java"}}}], extra_source[]

我想知道文件是从应用程序A还是B推出的? ES有可能吗?

我查看了_meta field的文档,但没有得到明确的信息,如果可能的话请说明一下?

Doc还说这个字段是not used by Elasticsearch。这个stmt意味着什么,意味着我无法对该字段执行任何操作?

由于

1 个答案:

答案 0 :(得分:1)

你不能用它(除非我误解了这个问题)。

模板中的_meta字段将添加到索引中,而不是文档中。此外,您还需要在查询中使用该属性,以便slowlog可以使用它(尽管据我所知,没有这样的概念)。

要更好地了解_meta,您可能需要在控制台中执行以下步骤(或将其翻译为cURL。

PUT my_index
{
  "mappings": {
    "user": {
      "_meta": { 
        "class": "MyApp::User",
        "version": {
          "min": "1.0",
          "max": "1.3"
        }
      }
    }
  }
}

GET my_index/_mapping

PUT my_index/user/1
{
  "foo": "bar"
}

GET my_index/_mapping

GET my_index/user/1

DELETE /my_index