Я очень новый для Elasticsearch, и я должен выполнить следующий запрос:Elasticsearch термин запрос не дает никаких результатов
GET book-lists/book-list/_search
{
"query":{
"filtered":{
"filter":{
"bool":{
"must":[
{
"term":{
"title":"Sociology"
}
},
{
"term":{
"idOwner":"17xxxxxxxxxxxx45"
}
}
]
}
}
}
}
}
Согласно API Elasticsearch, это эквивалентно псевдо-SQL:
SELECT document
FROM book-lists
WHERE title = "Sociology"
AND idOwner = 17xxxxxxxxxxxx45
проблема заключается в том, что мой документ выглядит следующим образом:
{
"_index":"book-lists",
"_type":"book-list",
"_id":"AVBRSvHIXb7carZwcePS",
"_version":1,
"_score":1,
"_source":{
"title":"Sociology",
"books":[
{
"title":"The Tipping Point: How Little Things Can Make a Big Difference",
"isRead":true,
"summary":"lorem ipsum",
"rating":3.5
}
],
"numberViews":0,
"idOwner":"17xxxxxxxxxxxx45"
}
}
И запрос Elasticsearch выше г ничего не вернуть.
В то время как этот запрос возвращает документ выше:
GET book-lists/book-list/_search
{
"query":{
"filtered":{
"filter":{
"bool":{
"must":[
{
"term":{
"numberViews":"0"
}
},
{
"term":{
"idOwner":"17xxxxxxxxxxxx45"
}
}
]
}
}
}
}
}
Это заставляет меня подозревать, что тот факт, что «название» одно и то же имя для двух полей для чего-то.
Есть ли способ исправить это, не переименовывая ни одно из полей. Или я скучаю по нему где-то еще?
Спасибо за каждого, кто пытается помочь.
Я столкнулся с такой же проблемой с отфильтрованным запросом. можете ли вы попытаться сделать социологию в нижнем регистре в своем запросе. –
У вас есть явное сопоставление с вашим индексом или вы используете динамическое сопоставление? – solarissmoke
@Undefined_variable, который работал oO – Mayas