исходный фильтр выбранных нескольких полей во вложенном документе в формате JSON в Elasticsearch - PullRequest
0 голосов
/ 06 октября 2018

В моем индексе эластичного поиска test_index у меня есть много документов в формате JSON со структурой ниже.

{
        "_index": "test_index",
        "_type": "_doc",
        "_id": "index10",
        "_score": 1,
        "_source": {
          "id_name": "index10",
          "further_details": {
            "nest1": {
              "section1": {
                "sectionnest1": {
                  "fielding11": "value11",
                  "fielding12": "value12",
                  "fielding13": "value13",
                  "fielding14": {
                    "subfielding141": "subvalue141",
                    "subfielding142": "subvalue142",
                    "subfielding143": "subvalue143"
                  },
                  "fielding15": "value15",
                  "fielding16": "value16",
                  "fielding17": "value16",
                  "fielding18": {
                    "subfielding181": "subvalue181",
                    "subfielding182": "20-DEC-2013 07:09:43",
                    "subfielding183": "0",
                    "subfielding184": "subvalue184",
                    "subfielding185": "subvalue185",
                    "subfielding186": "subvalue186",
                    "subfielding187": "subvalue187"
                  },
                  "fielding19": "value19",
                }
              },
              "sectionnest2": {
                "fielding21": [
                  "arrayvalue21"
                ]
              },
              "sectionnest3": {
                "fielding31": "value31",
                "fielding32": "value32",
                "fielding33": "value33",
                "fielding34": "value34",
                "fielding35": "value35",
                "fielding36": {
                  "subfielding361": "subvalue361"
                }
              }
            },
            "section2": {
                "sectionnest1": {
                  "fielding11": "value21",
                  "fielding12": "value22",
                  "fielding13": "value23",
                  "fielding14": {
                    "subfielding141": "subvalue241",
                    "subfielding142": "subvalue242",
                    "subfielding143": "subvalue243"
                  },
                  "fielding15": "value25",
                  "fielding16": "value26",
                  "fielding17": "value26",
                  "fielding18": {
                    "subfielding181": "subvalue281",
                    "subfielding182": "20-DEC-2014 08:09:43",
                    "subfielding183": "0",
                    "subfielding184": "subvalue284",
                    "subfielding185": "subvalue285",
                    "subfielding186": "subvalue286",
                    "subfielding187": "subvalue287"
                  },
                  "fielding19": "value29",
                }
              },
              "sectionnest2": {
                "fielding21": [
                  "arrayvalue21"
                ]
              },
              "sectionnest3": {
                "fielding31": "value231",
                "fielding32": "value232",
                "fielding33": "value233",
                "fielding34": "value234",
                "fielding35": "value235",
                "fielding36": {
                  "subfielding361": "subvalue2361"
                }
              }
            },
            "section3": {
                "sectionnest1": {
                  "fielding11": "value31",
                  "fielding12": "value32",
                  "fielding13": "value33",
                  "fielding14": {
                    "subfielding141": "subvalue341",
                    "subfielding142": "subvalue342",
                    "subfielding143": "subvalue343"
                  },
                  "fielding15": "value35",
                  "fielding16": "value36",
                  "fielding17": "value36",
                  "fielding18": {
                    "subfielding181": "subvalue381",
                    "subfielding182": "20-DEC-2017 08:10:43",
                    "subfielding183": "0",
                    "subfielding184": "subvalue384",
                    "subfielding185": "subvalue385",
                    "subfielding186": "subvalue386",
                    "subfielding187": "subvalue387"
                  },
                  "fielding19": "value39",
                }
              },
              "sectionnest2": {
                "fielding21": [
                  "arrayvalue31"
                ]
              },
              "sectionnest3": {
                "fielding31": "value4331",
                "fielding32": "value4332",
                "fielding33": "value4333",
                "fielding34": "value4334",
                "fielding35": "value4335",
                "fielding36": {
                  "subfielding361": "subvalue43361"
                }
              }
            }
          }
        }
      }

В приведенном выше примере документа я смог получить данные section1, section2, section3 (которые я хотел), используя запрос как

POST test_index/_search
{
  "size": 10,
  "_source": {
    "includes": [ "further_details.*.nest1.*" ],
    "excludes": [ "further_details.*.nest1.*.*" ]
  }
}

, но если я хочу получитьdata section1, section2, section3 и subfielding141 value, приведенный ниже запрос, который я пробовал, не работает.

POST test_index/_search
{
  "size": 10,
  "_source": {
    "includes": [ "further_details.*.nest1.*", "further_details.*subfielding141" ],
    "excludes": [ "further_details.*.nest1.*.*" ]
  }
}

Так что меня беспокоит, ожидаемое ли это поведение с Elasticsearch или я делаю не так.Я пытался проверить документы, которые не помогают мне преодолеть это.

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