Я создал образец индекса с предоставленными полями, и он дал правильный ответ. Отображение поля tags
, которое я использовал для создания индекса:
"mappings": {
"properties": {
"tags": {
"type": "keyword"
}
}
}
Мы используем поле keyword
, поскольку в запросе термина вам потребуется точное совпадение.
У меня есть создал три документа в этом индексе со следующим полем тегов:
{
"_index": "secesindex",
"_type": "_doc",
"_id": "1",
"_score": 1.0,
"_source": {
"tags": "John Smith"
}
},
{
"_index": "secesindex",
"_type": "_doc",
"_id": "2",
"_score": 1.0,
"_source": {
"tags": "John Farraday"
}
},
{
"_index": "secesindex",
"_type": "_doc",
"_id": "3",
"_score": 1.0,
"_source": {
"tags": "John"
}
}
Теперь, когда я выполняю запрос, как упомянуто выше:
{
"query": {
"bool": {
"filter": {
"term": {
"tags": "John Smith"
}
}
}
}
}
Это дает точное совпадение с документом, который имеет поле тегов значение, равное «Джону Смиту».
"hits": [
{
"_index": "secesindex",
"_type": "_doc",
"_id": "1",
"_score": 0.0,
"_source": {
"tags": "John Smith"
}
}
]