Упругий поиск - несколько полей в качестве идентификатора сопоставления в Spark - PullRequest
0 голосов
/ 08 июня 2018

Я довольно новичок в упругом поиске.Я использую elasticsearch-hadoop 6.2.4 версию, и я читаю файлы из HDFS, преобразовываю их в объект bean и пишу в упругий поиск.Я использую структурированную потоковую передачу Spark.

StreamingQuery query = dataSet
                        .writeStream()
                        .format("org.elasticsearch.spark.sql")
                        //.outputMode(OutputMode.Append())
                        .option("checkpointLocation", "\tmp\ckpt1")
                        .option("es.nodes","abc.dev.cm.par.xy.hp")
                        .option("es.port","9200")
                        .option("es.mapping.id", "CustomerID")
                        .option("es.resource", "testIndex/testType")
                        .start();

Во время записи я даю одно из полей (CustomerID) в классе pojo как отображение iD.Можем ли мы указать несколько полей или комбинацию полей в качестве идентификатора сопоставления?Например, мой файл содержит идентификатор клиента, а также поля идентификатора заказа.Можем ли мы объединить эти оба поля как CustomerID + OrderID что-то в этом роде?

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Нет, вы не можете установить несколько атрибутов как "es.mapping.id" .Одна вещь, которую вы можете сделать, это то, что вы когда-либо хотите составной Id, создайте его и добавьте его в Dataframe и используйте тот же.

0 голосов
/ 12 августа 2019

Или вы можете использовать функцию sha2 , генерируя хешированный идентификатор после объединения нескольких столбцов.

0 голосов
/ 13 августа 2018

Согласно Эластичная документация ;опция идентификатора сопоставления - взять имя столбца, поэтому;Вы не можете установить несколько столбцов в качестве идентификатора.но вы можете решить эту проблему, создав новый столбец со следующим значением:

dataSet.withColumn('id', CustomerID + OrderID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...