Причина в этом "default_operator" : "or",
. Я предполагаю, что поле name
является анализируемым полем. Если он использует анализатор, то он будет размечен. То же самое касается вашего ввода. Таким образом, у вас есть следующее (для стандартного анализатора)
- Orders 1.0 -> ["orders", "1.0"]
- Reports & Analysis 1.0 -> ["reports", "analysis", "1.0"]
- Rebates 1.0 -> ["rebates", "1.0"]
GET _analyze
{
"analyzer": "standard",
"text": ["Orders 1.0", "Reports & Analysis 1.0", "Rebates 1.0"]
}
{
"tokens" : [
{
"token" : "orders",
"start_offset" : 0,
"end_offset" : 6,
"type" : "<ALPHANUM>",
"position" : 0
},
{
"token" : "1.0",
"start_offset" : 7,
"end_offset" : 10,
"type" : "<NUM>",
"position" : 1
},
{
"token" : "reports",
"start_offset" : 11,
"end_offset" : 18,
"type" : "<ALPHANUM>",
"position" : 2
},
{
"token" : "analysis",
"start_offset" : 21,
"end_offset" : 29,
"type" : "<ALPHANUM>",
"position" : 3
},
{
"token" : "1.0",
"start_offset" : 30,
"end_offset" : 33,
"type" : "<NUM>",
"position" : 4
},
{
"token" : "rebates",
"start_offset" : 34,
"end_offset" : 41,
"type" : "<ALPHANUM>",
"position" : 5
},
{
"token" : "1.0",
"start_offset" : 42,
"end_offset" : 45,
"type" : "<NUM>",
"position" : 6
}
]
}
Поскольку оператор по умолчанию - OR
, это означает, что что вам нужен какой-либо из анализируемых токенов, а не все. И поскольку вы включили 1.0
, который присутствует на всех них, он соответствует всем документам. Одним из решений является изменение оператора по умолчанию на AND