Elasticsearch для элемента массива индекса - PullRequest
0 голосов
/ 23 октября 2018

Привет! Я хочу найти элемент массива из индекса, используя эластичный поисковый запрос.

{
  "name": "Karan",
  "address": [
                        {
                            "city": "newyork",
                            "zip": 12345
                        },
                        {
                            "city": "mumbai",
                            "zip": 23456
                        }]
}}

, когда я пытаюсь выполнить поиск по поисковому запросу, он не работает

{
    "query": {
      "bool": {
        "must": [
          {
            "match": {
              "address.city": "newyork"
            }
          }
        ]
      }
    }
  }

при доступе.просто наподобие «name»: «Karan» работает, есть проблема только для элемента массива.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Как я следовал ..

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

{
  "mappings": {
    "job": {
      "properties": {
        "name": {
          "type": "text"
        },
        "skills": {
          "type": "nested",
          "properties": {
            "value": {
              "type": "text"
            }
          }
        }
      }
    }
  }

Записи

[{"_index":"jobs","_type":"job","_id":"2","_score":1.0,"_source":{"name":"sr soft eng","skills":[{"value": "java"}, {"value": "oracle"}]}},{"_index":"jobs","_type":"job","_id":"1","_score":1.0,"_source":{"name":"sr soft eng","skills":[{"value": "java"}, {"value": "oracle"}, {"value": "javascript"}]}},

Поисковый запрос

{
  "query": {
    "nested": {
      "path": "skills",
      "query": {
        "bool": {
          "must": [
            { "match": {"skills.value": "java"}}
          ]
        }
      }
    }
  }
}
0 голосов
/ 23 октября 2018

Поскольку вложенные объекты индексируются как отдельные скрытые документы, мы не можем запрашивать их напрямую.Вместо этого мы должны использовать вложенный запрос для доступа к ним:

GET /my_index/blogpost/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "title": "eggs" 
          }
        },
        {
          "nested": {
            "path": "comments", 
            "query": {
              "bool": {
                "must": [ 
                  {
                    "match": {
                      "comments.name": "john"
                    }
                  },
                  {
                    "match": {
                      "comments.age": 28
                    }
                  }
                ]
              }
            }
          }
        }
      ]
}}}

См. Документы

...