asticsearch-pyspark: не получает определенные поля из документа (получает все поля) даже после указания с помощью spark - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь извлечь некоторые данные из эластичного поиска с помощью pyspark. Я хочу извлечь только несколько полей (не все) из документов. Итак, я делаю почтовый запрос от программного обеспечения «Почтальон» (для целей тестирования) со следующими URL и телом. Это дает идеальный результат, как и ожидалось. Но когда я использую то же тело со спарк-кодом, он извлекает все поля из указанных документов, что нежелательно. Может кто-нибудь сказать, что может быть причиной такого странного поведения? Заранее спасибо!

Spark версия 2.3, Elasticsearch версия 6.2, тип телосложения почтальона = application / json

Вот что я делаю с почтальоном:

`url : localhost:9200/test-index4/school/_search`

`body : 
{
    "query":
     {
         "ids":
           {
               "values":["8","9","10"]
           }
     },
     "_source":
     {
         "includes":["name"]
     }
}`

Вот что я делаю с pyspark:

`body = "{"query":{"ids":{"values":["8","9","10"]}},"_source":{"includes":["name"]}}"
df = self.__sql_context.read.format("org.elasticsearch.spark.sql") \
            .option("es.nodes", "localhost") \
            .option("es.port", "9200") \
            .option("es.query", body) \
            .option("es.resource", "test-index4/school") \
            .option("es.read.metadata", "true") \
            .option("es.read.metadata.version", "true") \
            .option("es.read.field.as.array.include", "true") \
            .load()

`

1 Ответ

0 голосов
/ 10 мая 2018

Попробуйте установить es.read.field.include в конфигурации со значением в виде списка полей через запятую.например, "es.read.field.include","field1,field2,..."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...