如何在弹性搜索

时间:2017-01-12 16:02:37

标签: elasticsearch

我使用弹性搜索来创建搜索过滤器,我需要找到保存在" cambio"的数据库中的所有值。列,不重复值。

值保存如下:" Manual de 5 marchas"或"手册de 6 marchas" ....

我创建了此查询以返回所有已保存的值:

GET /crawler10/crawler-vehicles10/_search
{
  "size": 0,
  "aggregations": {
    "my_agg": {
      "terms": {
        "field": "cambio"
      }
    }
  }
}

但是当我运行返回的值时,它们看起来像这样:

   "aggregations": {
      "my_agg": {
         "doc_count_error_upper_bound": 2,
         "sum_other_doc_count": 2613,
         "buckets": [
            {
               "key": "de",
               "doc_count": 2755
            },
            {
               "key": "marchas",
               "doc_count": 2714
            },
            {
               "key": "manual",
               "doc_count": 2222
            },
            {
               "key": "modo",
               "doc_count": 1097
            },
            {
               "key": "5",
               "doc_count": 1071
            },
            {
               "key": "d",
               "doc_count": 1002
            },
            {
               "key": "n",
               "doc_count": 1002
            },
            {
               "key": "automática",
               "doc_count": 935
            },
            {
               "key": "com",
               "doc_count": 919
            },
            {
               "key": "6",
               "doc_count": 698
            }
         ]
      }
   }

1 个答案:

答案 0 :(得分:1)

聚合基于已保存字段的映射类型。 cambio的字段类型似乎设置为analyzed(默认情况下)。请为您的字段not_analyzed创建一个包含cambio映射的索引。

您可以使用PUT请求创建索引(如果您的ES版本小于5),然后您需要在crawler10索引中重新索引数据。

PUT crawler10/_mapping/
{
  "mappings": {
    "crawler-vehicles10": {
      "properties": {
        "cambio": {
          "type": "string"
          "index": "not_analyzed"

        }
      }
    }
  }
}

对于ES v5或更高版本

PUT crawler10/_mapping/
{
  "mappings": {
    "crawler-vehicles10": {
      "properties": {
        "cambio": {
          "type": "keyword"
        }
      }
    }
  }
}