Как выбрать в упругом точное значение в массиве вложенных объектов - PullRequest
0 голосов
/ 29 октября 2019

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

Вторая проблема, у меня есть дубликаты, как удалитьдубликаты?

Я много пробовал типа аггрегации и фильтра ...

Отображение:

"metas" : {
            "type" : "nested",
            "include_in_root" : true,
            "properties" : {
              "suggest" : {
                "type" : "completion",
                "analyzer" : "suggest_analyzer",
                "preserve_separators" : true,
                "preserve_position_increments" : true,
                "max_input_length" : 50,
                "contexts" : [
                  {
                    "name" : "rev",
                    "type" : "CATEGORY",
                    "path" : "rev"
                  },
                  {
                    "name" : "type",
                    "type" : "CATEGORY",
                    "path" : "metas.type"
                  }
                ]
              },
              "type" : {
                "type" : "keyword"
              },
              "value" : {
                "type" : "text",
                "fields" : {
                  "raw" : {
                    "type" : "keyword"
                  }
                },
                "copy_to" : [
                  "full_text"
                ],

Запрос:

GET myindex/_search
{
  "from": 0,
  "size": 1,
   "_source": [ "metas" ],
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "query": {
              "bool": {
                "must": [
                  {
                    "terms": {
                      "metas.type": [
                        "specificType",
                      ],
                      "boost": 1
                    }
                  },

                ],
                "adjust_pure_negative": true,
                "boost": 1
              }
            },
            "path": "metas",
            "ignore_unmapped": false,
            "score_mode": "avg",
            "boost": 1
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
    },
    "aggs" : {
        "all_products" : {
            "global" : {},
    "aggregations": {
    "byValue": {
      "nested": {
        "path": "metas"
      },

      "aggs": {
        "TYPE": {
          "terms": {
            "field": "metas.type",
            "include": [
              "specificType"
            ]
          },
          "aggs": {
            "VALUE": {
              "terms": {
                "field": "metas.value.raw"
              }
            }
          }
        }
      }
    }
    } 
    }
  }
}

Iожидайте вывод только с моим конкретным типом со значением, а не со всеми ключевыми значениями метасов и, если возможно, без дубликатов.

...