Подстановочный запрос Elasticseach для вложенных типов - PullRequest
2 голосов
/ 02 апреля 2020

Я пытаюсь запустить шаблонный запрос для вложенного типа в ElasticSearch. У меня есть записи со следующей структурой:

{
  "field_1": "value_1",
  "nested_field_1": [
    {
      "field_type": "some_field_type",
      "field_value": "some_value"
    },
    {
      "field_type": "another_field_type",
      "field_value": "another_value"
    }
  ]
}

Я хочу иметь возможность выполнять подстановочный запрос для nested_field, либо на field_value, либо на field_type.

Я могу запросить точное совпадение с этим синтаксисом:

  "query": {
    "nested": {
      "path": "nested_field_1",
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "nested_field_1.field_value": "another_value"
              }
            }
          ]
        }
      }
    }
  }
}

Но замена match на wildcard не даст никаких результатов. Любая помощь будет приветствоваться.

1 Ответ

1 голос
/ 02 апреля 2020

Итак, я только что попробовал ваш пример, и он дает мне результат, и использовал официальный запрос подстановочного знакаasticsearch do c.

Index Def

{
    "mappings": {
        "properties": {
            "field_1": {
                "type": "text"
            },
            "nested_field_1" :{
                "type" : "nested",
                "properties" : {
                    "field_type" :{
                        "type" : "text"
                    },
                    "field_value" :{
                        "type" : "integer" --> created as interfere field
                    }
                }
            }
        }
    }
}

Index do c

{
    "field_1": "value_1",
    "nested_field_1": [
        {
            "field_type": "some_field_type",
            "field_value": 20
        },
        {
            "field_type": "another_field_type",
            "field_value": 40
        }
    ]
}

Подстановочный запрос

{
    "query": {
        "nested": {
            "path": "nested_field_1",
            "query": {
                "bool": {
                    "must": [
                        {
                            "wildcard": { --> note 
                                "nested_field_1.field_type": {
                                    "value": "another_field_type"
                                }
                            }
                        }
                    ]
                }
            }
        }
    }
}

Результат поиска

  "nested_field_1": [
                        {
                            "field_type": "some_field_type",
                            "field_value": 20
                        },
                        {
                            "field_type": "another_field_type",
                            "field_value": 40
                        }
                    ]
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...