Эластичный поиск dsl в переводе с sql не работает - PullRequest
0 голосов
/ 18 октября 2018

пробует эластичный поиск (6.4.2) sql rest api на наборе данных yelp,

read -r -d '' sql <<'EOF'
{
    "query":"select city, COUNT(*) AS c from \"yelp.business\" group by city"
}
EOF

curl -v -XPOST "http://$host/_xpack/sql?format=txt" -H'Content-Type: application/json' -d"$sql"

получить правильный ответ

            city            |       c
----------------------------+---------------
Cleveland                   |2977
Cleveland Heights           |179
Cleveland Hghts.            |1
East Cleveland              |4
Mayfield Heights (Cleveland)|1

но перевести sql в dsl

query=`curl -v -XPOST "http://$host/_xpack/sql/translate?format=json" -H'Content-Type: application/json' -d"$sql"`

получить следующее:

{
   "_source" : false,
   "size" : 0,
   "aggregations" : {
      "groupby" : {
         "composite" : {
            "sources" : [
               {
                  "2467" : {
                     "terms" : {
                        "order" : "asc",
                        "field" : "city.keyword",
                        "missing_bucket" : false
                     }
                  }
               }
            ],
            "size" : 1000
         }
      }
   },
   "stored_fields" : "_none_"
}

выполнить переведенный dsl по запросу поиска

curl -XGET "http://$host/antkrill.event/_search" -H 'Content-Type: application/json' -d"$query"

и получить ошибку

не удалось найти поле [city.keyword]и [missing_bucket] не установлено

, почему поиск по sql в порядке, но ошибка с переведенным dsl

1 Ответ

0 голосов
/ 18 октября 2018

моя собственная проблема! второй запрос был выполнен с переведенным dsl по другому индексу!

...