Elasticsearch Отличительный запрос после установки для fielddata значения true - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь получить разные значения поля "vip_name" в индексе.Вот с чего я пытался начать:

curl -XGET http://172.31.38.157:9200/cb_inventory/_search -d 
'{"size":0,"aggs":{"vips":{"terms":{"field":"vip_name"}}}}'

{"error":{"root_cause":
[{"type":"illegal_argument_exception","reason":"Fielddata is disabled 
on text fields by default. Set fielddata=true on [vip_name] in order to 
load fielddata in memory by uninverting the inverted index. Note that 
this can however use significant memory. Alternatively use a keyword 
field 
instead."}],"type":"search_phase_execution_exception","reason":"all 
shards failed","phase":"query","grouped":true,"failed_shards":  [{"shard":0,
"index":"cb_inventory","node":"7_t7zG82QsS__Q_vRHWy9A","reason":
{"type":"illegal_argument_exception","reason":"Fielddata is disabled on text fields
 by default. 

ОК.Поэтому я установил для fielddata значение true, как показано ниже:

curl -XPUT http://172.31.38.157:9200/cb_inventory/_mapping/cb_inventory -d '{"properties":{"vip_name":{"type":"text","fielddata":true}}}'
{"acknowledged":true}

Теперь я выполняю поиск и возвращаю следующее:

curl -XGET http://172.31.38.157:9200/cb_inventory/_search?pretty=true -d '{"size":0,"aggs":{"vips":{"terms":{"field":"vip_name","size":1000}}}}'
{"took" : 5,
 "timed_out" : false,
 "_shards" : {
   "total" : 5,
   "successful" : 5,
   "skipped" : 0,
   "failed" : 0
 },
"hits" : {
  "total" : 3,
   "max_score" : 0.0,
   "hits" : [ ]
 },
"aggregations" : {
  "vips" : {
   "doc_count_error_upper_bound" : 0,
  "sum_other_doc_count" : 0,
  "buckets" : [
    {
      "key" : "domain.com",
      "doc_count" : 3
    },
    {
      "key" : "ppcbcl00021",
      "doc_count" : 3
    }
  ]
}
}
}

Это немного забавно, поскольку у меня есть только один отличныйЗначение ppcbcl00021.domain.com.Теперь это проявляется как 2 сломанных различных значения.

Как мне получить другое значение как "ppcbcl00021.domain.com"

1 Ответ

0 голосов
/ 30 мая 2018

Это потому, что vip_name установлено в text, а не keyword.Таким образом, даже если у вас есть ppcbcl00021.domain.com, в ES он будет сохранен как фрагмент текста, то есть ppcbcl00021 и domain.com.

Попробуйте еще раз, установив vip_name в keyword

curl -XPUT http://172.31.38.157:9200/cb_inventory/_mapping/cb_inventory -d '{"properties":{"vip_name":{"type":"keyword"}}}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...