Пример фильтрации результатов графического поиска

Я дублировал базу данных фильмов Neo4j на Elasticsearch и он индексируется с индексом nodes, Имеет два типа Movie а также Person, Я пытаюсь сделать простой Result Filtering с Graph-Aided Search используя эту командную строку curl:

curl -X GET localhost:9200/nodes/_search?pretty -d '{
   "query": {
      "match_all" : {}
   },

   "gas-filter": {
       "name": "SearchResultCypherfilter",
       "query": "MATCH (p:Person)-[ACTED_IN]->(m:Movie) WHERE p.name= 'Parker Posey' RETURN m.uuid as id",
       "ShouldExclude": true,
       "protocol": "bolt"
   }
}'

Но я получаю в результате все 171 узлов обоих типов Movie а также Person в моем указателе nodes, Однако, как говорится в моем запросе, я хочу вернуть только тип Movie по названию. Так что в основном это не выглядит gas-filter часть.

Также, когда я ставлю false как значение shouldExclude Я получаю те же результаты.

[ОБНОВИТЬ]

Я попробовал предложение @Tezra, теперь я возвращаю только идентификатор uuid и я положил shouldExclude вместо exclude но все равно получаю те же результаты.

Я работаю с:

  • Elasticsearch 2.3.2
  • граф-автоматизированный поиск-2.3.2.0
  • Neo4j-сообщество 2.3.2.10
  • graphaware-UUID-2.3.2.37.7
  • graphaware-сервер-сообщества все-2.3.2.37
  • graphaware-Neo4j к elasticsearch-2.3.2.37.1

Результат, который должен быть возвращен:

uuid фильма под названием You've Got Mail,


Я попытался следовать этому руководству по настройке, и я обнаружил, что index.gas.enable имел значение false поэтому я изменил его и закончил настройку, как в учебнике:

mac$ curl -XPUT http://localhost:9200/nodes/_settings?index.gas.neo4j.hostname=http://localhost:7474
{"acknowledged":true}

mac$ curl -XPUT http://localhost:9200/nodes/_settings?index.gas.enable=true
{"acknowledged":true}

mac$ curl -XPUT http://localhost:9200/indexname/_settings?index.gas.neo4j.user=neo4j
{"acknowledged":true}

mac$ curl -XPUT http://localhost:9200/indexname/_settings?index.gas.neo4j.password=mypassword
{"acknowledged":true}

После этого я попытался добавить настройки boltHostname а также bolt.secure но это не сработало, и у меня была эта ошибка:

{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Can't update non dynamic settings[[index.gas.neo4j.boltHostname]] for open indices [[nodes]]"}],"type":"illegal_argument_exception","reason":"Can't update non dynamic settings[[index.gas.neo4j.boltHostname]] for open indices [[nodes]]"},"status":400}

Поэтому я закрыл свой индекс, чтобы настроить его, а затем открыл его снова:

mac$ curl -XPOST http://localhost:9200/nodes/_close
{"acknowledged":true}

mac$ curl -XPUT http://localhost:9200/nodes/_settings?index.gas.neo4j.boltHostname=bolt://localhost:7687
{"acknowledged":true}

mac$ curl -XPUT http://localhost:9200/nodes/_settings?index.gas.neo4j.bolt.secure=false
{"acknowledged":true}

mac$ curl -XPOST http://localhost:9200/nodes/_open
{"acknowledged":true}

После завершения настройки я попробовал еще раз Postman тот же самый gas-filter запрос, который я выполнял с curl и теперь я получаю эту ошибку:

{
  "error": {
    "root_cause": [
      {
        "type": "runtime_exception",
        "reason": "Failed to parse a search response."
      }
    ],
    "type": "runtime_exception",
    "reason": "Failed to parse a search response.",
    "caused_by": {
      "type": "client_handler_exception",
      "reason": "java.net.ConnectException: Connection refused (Connection refused)",
      "caused_by": {
        "type": "connect_exception",
        "reason": "Connection refused (Connection refused)"
      }
    }
  },
  "status": 500
}

Я не знаю, о какой связи говорит ошибка. Я уверен, что передал правильный пароль Neo4j в конфигурации. Я даже остановил и снова перезапустил серверы Elasticsearch а также Neo4j но все те же ошибки.

Настройки моего индекса nodes выглядит так:

{
  "nodes" : {
    "settings" : {
      "index" : {
        "gas" : {
          "enable" : "true",
          "neo4j" : {
            "hostname" : "http://localhost:7474",
            "password" : "neo4j.",
            "bolt" : {
              "secure" : "false"
            },
            "boltHostname" : "bolt://localhost:7687",
            "user" : "neo4j"
          }
        },
        "creation_date" : "1495531307760",
        "number_of_shards" : "5",
        "number_of_replicas" : "1",
        "uuid" : "SdrmQKhXQmyGKHmOh_xhhA",
        "version" : {
          "created" : "2030299"
        }
      }
    }
  }
}

Есть идеи?

1 ответ

Я понял, что Connection refused Исключение, которое я получал, было из-за Wifi, Поэтому мне пришлось отключиться от интернета, чтобы все заработало. Я знаю, что это не идеальное решение. Так что, если кто-то нашел лучший способ сделать это, пожалуйста, поделитесь им здесь.

Другие вопросы по тегам