У меня есть документы с эластичным вложенным полем. Вот пример документа
"Not nestedKey": "Some value"
"sentencesSentiments": [
{
"sentence": "Good",
"sentenceKeyword": "Good",
"score": 0.8,
"magnitude": 0.8
}
]
"Another not nested key" :"Another value"
. Как вы можете видеть, * предложений - это вложенный ключ, вот его отображение
"sentencesSentiments": {
"type": "nested",
"properties": {
"magnitude": {
"type": "double",
"store": true
},
"score": {
"type": "double",
"store": true
},
"sentence": {
"type": "text",
"store": true
},
"sentenceKeyword": {
"type": "keyword",
"store": true
}
}
}
Теперь мне нужно получить те документы, в которых пустые предложения и некоторые другие фильтры bool.Я пробовал разные запросы, но ни один из них не работает, вот несколько запросов
GET indexName/_search
{
"query": {
"nested": {
"path": "sentencesSentiments",
"query": {
"bool": {
"must": [
{
"exists": {
"field": "sentencesSentiments.sentenceKeyword"
}
}
]
}
}
}
}
}
GET indexName/_search
{
"query": {
"bool": {
"filter": {
"nested": {
"path": "sentencesSentiments",
"filter": {
"script": {
"script" : {
"inline": "doc['sentencesSentiments'].values.length > 0",
"lang": "painless"
}
}
}
}
}
}
}
}
GET indexname/_search
{
"query": {
"bool" : {
"must" : {
"script" : {
"script" : {
"inline": "doc['sentencesSentiments'].values.length > 0",
"lang": "painless"
}
}
}
}
}
}
Я также пробовал "values.size ()".Не в состоянии выяснить точный синтаксис для этого. Примечание: я использую эластичную версию 5.5