У меня есть документ, который выглядит следующим образом:Elasticsearch - Cardinality над Full Field Value
{
"_id":"some_id_value",
"_source":{
"client":{
"name":"x"
},
"project":{
"name":"x November 2016"
}
}
}
Я пытаюсь выполнить запрос, который закачает мне количество уникальных имен проекта для каждого клиента. Для этого я использую запрос с cardinality
по project.name
. Я уверен, что для этого конкретного клиента есть только 4
уникальных имен проектов. Однако, когда я запускаю свой запрос, я получаю счет 5
, который, как я знаю, ошибочен.
Имена проектов содержат имя клиента. Например, если клиентом является «X», имена проектов будут «X Testing November 2016» или «X Jan 2016» и т. Д. Я не знаю, является ли это соображением.
Это отображение для типа документа
{
"mappings":{
"vma_docs":{
"properties":{
"client":{
"properties":{
"contact":{
"type":"string"
},
"name":{
"type":"string"
}
}
},
"project":{
"properties":{
"end_date":{
"format":"yyyy-MM-dd",
"type":"date"
},
"project_type":{
"type":"string"
},
"name":{
"type":"string"
},
"project_manager":{
"index":"not_analyzed",
"type":"string"
},
"start_date":{
"format":"yyyy-MM-dd",
"type":"date"
}
}
}
}
}
}
}
Это мой поисковый запрос
{
"fields":[
"client.name",
"project.name"
],
"query":{
"bool":{
"must":{
"match":{
"client.name":{
"operator":"and",
"query":"ABC systems"
}
}
}
}
},
"aggs":{
"num_projects":{
"cardinality":{
"field":"project.name"
}
}
},
"size":5
}
Таковы результаты, которые я получаю (я только отправил 2 результаты для краткости) , Убедитесь, что агрегация num_projects возвращает 5, но должна возвращать только 4, что является общим количеством проектов.
{
"hits":{
"hits":[
{
"_score":5.8553367,
"_type":"vma_docs",
"_id":"AVTMIM9IBwwoAW3mzgKz",
"fields":{
"project.name":[
"ABC"
],
"client.name":[
"ABC systems Pvt Ltd"
]
},
"_index":"vma"
},
{
"_score":5.8553367,
"_type":"vma_docs",
"_id":"AVTMIM9YBwwoAW3mzgK2",
"fields":{
"project.name":[
"ABC"
],
"client.name":[
"ABC systems Pvt Ltd"
]
},
"_index":"vma"
}
],
"total":18,
"max_score":5.8553367
},
"_shards":{
"successful":5,
"failed":0,
"total":5
},
"took":4,
"aggregations":{
"num_projects":{
"value":5
}
},
"timed_out":false
}
FYI: Названия проекта являются ABC
, ABC Nov 2016
, ABC retest November
, ABC Mobile App
Можете ли вы представить суть своего тестового сценария? (отображение индекса, некоторые образцы данных и запрос) –
@AndreiStefan - Я добавил детали, которые вы просили. Надеюсь, поможет. –