Запрос полнотекстового поиска Amazon Neptune не работает должным образом

Я пытаюсь реализовать полнотекстовый поиск Neptune DB с помощью elasticsearch вручную, но получаю эту ошибку:

{"requestId":"bcb16f6b-7e60-4e71-b0d8-a6a4a9b38b00","code":"MalformedQueryException","detailedMessage":"Failed to interpret Gremlin query: null"}

Вот мой документ:

{
    "entity_id": "f8b9726f-74f9-a0e0-5fbd-b609bbb14f89",
    "entity_type": [
        "suggestions"
    ],
    "document_type": "vertex",
    "predicates": {
        "title": {
            "value": "samsung mobile"
        }
    }
}

запрос:

g.withSideEffect('Neptune#fts.endpoint','elasticsearch cluster end point').withSideEffect('Neptune#fts.queryType', 'match').V().has('title','Neptune#fts samsung').local(values('title').fold()).limit(5).valueMap().toList()

он выдает ошибку, только если я помещаю существующее слово в поиск, например, Samsung, но если я ищу недоступное слово, оно работает нормально, не вызывая ошибок. Не уверен, что здесь не так, может ли кто-нибудь мне с этим помочь?


person Raghu Chahar    schedule 26.09.2020    source источник
comment
Когда вы говорите вручную, вы заполняли кластер ElasticSearch самостоятельно или позволили Neptune сделать это за вас? Также в запросе вы указали кластер Neptune или имя кластера ES в Neptune#fts.endpoint побочном эффекте? Это должна быть конечная точка ES.   -  person Kelvin Lawrence    schedule 27.09.2020
comment
Под этим побочным эффектом в запросе: withSideEffect ('Neptune # fts.endpoint', 'nwptune end point') вы помещаете конечную точку Neptune или конечную точку кластера Elasticserch? Это должен быть эластичный поисковый кластер.   -  person bechbd    schedule 01.10.2020
comment
@KelvinLawrence, bechbd, извините за то, что на самом деле это была конечная точка elasticsearch. Он работает нормально, проблема была с `` local (values ​​('title'). Fold ()) `` Я удалил это, и теперь он работает нормально. Кто-нибудь может сказать мне, что на самом деле сделал этот местный житель?   -  person Raghu Chahar    schedule 01.10.2020
comment
Я добавил ответ ниже и причину, по которой запрос не сработал.   -  person Kelvin Lawrence    schedule 02.10.2020


Ответы (1)


На шаге local, который вы показали, для каждого найденного свойства title будет создан список с этим свойством в нем. Без локального шага все найденные значения были бы заключены в единый список, если бы вы только что сделали values('title').fold().

Однако обратите внимание, и, вероятно, поэтому ваш запрос не удался, что вы не можете добавить шаг valueMap после этого шага local, поскольку вы пытаетесь применить valueMap не к вершинам, а к одному или нескольким спискам строк, выходящим из шага local. .

person Kelvin Lawrence    schedule 02.10.2020