J'ai dupliqué la base de données Movie de Neo4j
sur Elasticsearch
et elle est indexée avec l'index nodes
. Il a deux types et Person
. Je suis en train de faire un Result Filtering
simple avec Graph-Aided Search
en utilisant cette ligne de commande curl:Exemple de filtrage des résultats de recherche assistée par graphe
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"
}
}'
Mais je reçois comme résultats tous les 171 noeuds des deux types Movie
et Person
dans mon index nodes
. Cependant, comme ma requête dit que je veux retourner seulement le type Movie
par son titre. Donc, fondamentalement, il ne regarde pas à la partie gas-filter
.
Aussi quand je mets false
comme valeur de shouldExclude
je reçois les mêmes résultats.
[UPDATE]
J'ai essayé la suggestion de @Tezra, je retourne maintenant que l'id uuid
et je mets shouldExclude
au lieu de exclude
mais toujours obtenir les mêmes résultats.
Je travaille avec:
- ElasticSearch 2.3.2
- graphique assistée par-recherche-2.3.2.0
- Neo4j communauté 2.3.2.10
- graphaware-uuid-2.3.2.37 .7
- graphaware-server-communauté tout 2.3.2.37
- graphaware-Neo4j à ElasticSearch-2.3.2.37.1
Résultat qui devrait être de retour:
Le uuid
du film intitulé You've Got Mail
.
J'ai essayé de suivre cette tutorial pour la configuration, et je trouve que index.gas.enable
avait la valeur false
donc je l'ai changé et terminé la configuration comme dans le tutoriel:
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}
Après cela J'ai essayé d'ajouter les paramètres de boltHostname
et bolt.secure
mais cela n'a pas fonctionné et j'ai eu cette erreur:
{"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}
Je fermais mon index pour le configurer puis rouvrit:
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}
Après avoir terminé la configuration que j'ai essayé à nouveau sur Postman
la même gas-filter
requête que j'exécutais avec curl
et maintenant je reçois cette erreur:
{
"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
}
Je ne sais pas de quelle connexion parle l'erreur. Je suis sûr que j'ai passé le mot de passe correct de Neo4j
dans la configuration. J'ai même arrêté et redémarré à nouveau les serveurs de Elasticsearch
et Neo4j
mais toujours les mêmes erreurs.
Les paramètres de mon index nodes
ressemble à ceci:
{
"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"
}
}
}
}
}
Toutes les idées?
Ne devrait-il pas être "shouldExclude" au lieu de "exclude"? Aussi, je pense que vous devez retourner seulement m.id. – Tezra
@Tezra même avec 'shouldExclude' au lieu de' exclude', j'obtiens les mêmes résultats. Et pourquoi devrais-je retourner seulement m.id? – Benz