关键字字段应该是数组还是单个字符串?

时间:2017-05-11 16:22:34

标签: elasticsearch

我是ElasticSearch的新手,所以这是一个非常基本的问题。

如果我将字段映射为索引中的关键字,那么文档是否应包含该字段的字符串数组?或者一个字符串,其中所有关键字都用空格分隔?

如果我的索引看起来像这样(关键字是我们感兴趣的话):

{
  "esidx_j_cv" : {
    "mappings" : {
      "j_cv" : {
        "properties" : {
          "Id" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          },
          "Keyword" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          },
          "Name" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          }
        }
      }
    }
  }
}

文档应如下所示:

{
    "_index" : "esidx_j_cv",
    "_type" : "j_cv",
    "_id" : "2fab7349-c13f-447a-95fa-984df6836c14",
    "_score" : 1.0,
    "_source" : {
      "Id" : "2fab7349-c13f-447a-95fa-984df6836c14",
      "Name" : "Jim Bloggs",
      "Keyword" : [
        "San",
        "Andreas",
        "Fault",
        "California"
      ]
    }
 }

或者像这样:

  {
    "_index" : "esidx_j_cv",
    "_type" : "j_cv",
    "_id" : "2fab7349-c13f-447a-95fa-984df6836c14",
    "_score" : 1.0,
    "_source" : {
      "Id" : "2fab7349-c13f-447a-95fa-984df6836c14",
      "Name" : "Jim Bloggs",
      "Keyword" : "San Andreas Fault California"
     }
   }

谢谢,

亚当。

1 个答案:

答案 0 :(得分:0)

使用数组将是最惯用的,这将是我的建议。您可以像这样查询它(此查询实际上可以使用任一选项):

GET index/_search
{
  "query": {
    "match": {
      "Keyword": "California" 
    }
  }
}