Эластичный родитель поиска с тем же типом


Извините, если это дубликат (я пытался искать), или если это глупый вопрос. Новичок в размещении вопросов.

Я пытаюсь сделать родительские дочерние отношения и запросы в ElasticSearch со следующим:

    #!/bin/bash

curl -XDELETE 'http://localhost:9200/test/'
echo

curl -XPUT 'http://localhost:9200/test/' -d '{
"settings" : {
        "index" : {
            "number_of_shards" : 1
        }
    }
}'
echo

curl -XPUT localhost:9200/test/_mapping/nelement -d '{
        "nelement" : {
            "_id" : { "path" : "nid", "store" : true, "index" : "not_analyzed"},
            "_parent" : { "type" : "nelement"},
            "properties" : {
                "name" : { "type" : "string",  "index" : "not_analyzed" },
                "nid": { "type" : "string", "copy_to" : "_id" }
            }
        }
}'
echo

#curl -s -XPOST localhost:9200/_bulk --data-binary @test_data.json
test_data.json is as follows:
{"index":{"_index":"test","_type":"element", "_parent":"abc"}
{"nid":"1a","name":"parent1"}
{"index":{"_index":"test","_type":"element", "_parent":"1a"}
{"nid":"2b","name":"child1"}
{"index":{"_index":"test","_type":"element", "_parent":"2b"}
{"nid":"2c","name":"child2"}


curl -XGET 'localhost:9200/test/nelement/_search?pretty=true' -d '{

 "query": {
    "has_child": {
      "child_type": "nelement", 
      "query": {
        "match": {
          "nid": "2c"
        }
      }
    }
  }

}'



echo
echo
curl -XGET 'localhost:9200/test/nelement/_search?pretty=true' -d '{

 "query": {
    "has_parent": {
      "type": "nelement", 
      "query": {
        "term": {
          "nid": "2b"
        }
      }
    }
  }

}'
По какой-то причине мои поисковые запросы не дают результатов. Я подтвердил, что объекты индексируются....
1 6

1 ответ:

Потому что вы используете самореферентный(задайте parent и query в том же типе индекса ) для родительского/дочернего запроса.

Пока Elasticsearch его не поддерживает.

Исследуйте самореферентную поддержку родителя/ребенка