почемуasticsearch выдает какой-либо один случайный документ при использовании «params ['_ source']» в контексте script_fields? - PullRequest
0 голосов
/ 08 апреля 2020

Я тестировал script_fields запрос, когда нашел это. когда я возвращаю params ['_ source'] из script_fields context, он не работает должным образом.

Я использую версию Elasticsearch 7.6.1 .

Когда я запускаю следующий запрос, то:

GET hockey/_search
{

  "explain": true,
  "query": {
    "match_all": {}

  },
  "script_fields": {

    "_source":{
      "script": {
        "source": """

          return params['_source'];

        """
      }
    }
  }
}

появляется следующий результат

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 12,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            {
              "last" : "backlund",
              "assists" : [
                6,
                24,
                18
              ],
              "born" : "1989/03/17",
              "gp" : [
                26,
                82,
                82
              ],
              "first" : "mikael",
              "goals" : [
                3,
                15,
                13
              ]
            }
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            {
              "last" : "backlund",
              "assists" : [
                6,
                24,
                18
              ],
              "born" : "1989/03/17",
              "gp" : [
                26,
                82,
                82
              ],
              "first" : "mikael",
              "goals" : [
                3,
                15,
                13
              ]
            }
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "3",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            {
              "last" : "backlund",
              "assists" : [
                6,
                24,
                18
              ],
              "born" : "1989/03/17",
              "gp" : [
                26,
                82,
                82
              ],
              "first" : "mikael",
              "goals" : [
                3,
                15,
                13
              ]
            }
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "4",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            {
              "last" : "backlund",
              "assists" : [
                6,
                24,
                18
              ],
              "born" : "1989/03/17",
              "gp" : [
                26,
                82,
                82
              ],
              "first" : "mikael",
              "goals" : [
                3,
                15,
                13
              ]
            }
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "5",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            {
              "last" : "backlund",
              "assists" : [
                6,
                24,
                18
              ],
              "born" : "1989/03/17",
              "gp" : [
                26,
                82,
                82
              ],
              "first" : "mikael",
              "goals" : [
                3,
                15,
                13
              ]
            }
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "6",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            {
              "last" : "backlund",
              "assists" : [
                6,
                24,
                18
              ],
              "born" : "1989/03/17",
              "gp" : [
                26,
                82,
                82
              ],
              "first" : "mikael",
              "goals" : [
                3,
                15,
                13
              ]
            }
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "7",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            {
              "last" : "backlund",
              "assists" : [
                6,
                24,
                18
              ],
              "born" : "1989/03/17",
              "gp" : [
                26,
                82,
                82
              ],
              "first" : "mikael",
              "goals" : [
                3,
                15,
                13
              ]
            }
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "8",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            {
              "last" : "backlund",
              "assists" : [
                6,
                24,
                18
              ],
              "born" : "1989/03/17",
              "gp" : [
                26,
                82,
                82
              ],
              "first" : "mikael",
              "goals" : [
                3,
                15,
                13
              ]
            }
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "39",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            {
              "last" : "backlund",
              "assists" : [
                6,
                24,
                18
              ],
              "born" : "1989/03/17",
              "gp" : [
                26,
                82,
                82
              ],
              "first" : "mikael",
              "goals" : [
                3,
                15,
                13
              ]
            }
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "10",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            {
              "last" : "backlund",
              "assists" : [
                6,
                24,
                18
              ],
              "born" : "1989/03/17",
              "gp" : [
                26,
                82,
                82
              ],
              "first" : "mikael",
              "goals" : [
                3,
                15,
                13
              ]
            }
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      }
    ]
  }
}

, вы можете ясно видеть, что хотя попадет s _id отличается, но fields._source не изменяется. Фактически, возвращенный документ является одним из документов в моем указателе. Все остальные документы не отображаются.

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

GET hockey/_search
{

  "explain": true,
  "query": {
    "match_all": {}

  },
  "script_fields": {

    "_source":{
      "script": {
        "source": """

          return params['_source']['first'];

        """
      }
    }
  }
}

следующий результат

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 12,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            "johnny"
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            "sean"
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "3",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            "jiri"
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "4",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            "micheal"
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "5",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            "sam"
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "6",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            "dennis"
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "7",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            "david"
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "8",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            "tj"
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "39",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            "mark"
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      },
      {
        "_shard" : "[hockey][0]",
        "_node" : "UIMgEAZNRzmIpRGyQtNk9g",
        "_index" : "hockey",
        "_type" : "_doc",
        "_id" : "10",
        "_score" : 1.0,
        "fields" : {
          "_source" : [
            "mikael"
          ]
        },
        "_explanation" : {
          "value" : 1.0,
          "description" : "*:*",
          "details" : [ ]
        }
      }
    ]
  }
}

Здесь вы видите соответствующий _id s правильный первый имя появляется, и это не то же самое каждый раз.

Мне нужно знать, является ли это ошибкой или это сделано намеренно, потому что это создает большую путаницу среди новых пользователей Elasticsearch.

Я знаю, что можно получить _source, используя

"stored_fields": [
    "_source"
  ],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...