Получить документы по размеру вложенного поля вasticsearch? - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть документы с эластичным вложенным полем. Вот пример документа

"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

...