Как искать данные в объекте с помощью API FlexibleSearch 7+ java - PullRequest
1 голос
/ 12 февраля 2020

Я хочу найти все документы, где role_id равен 8, а status.id равен 5. У меня есть индекс ниже моих данных.

Я пытался получить данные только по role_id, равному 8, с запросом ниже

{
    "query": {
      "bool": {
        "filter": [
          {  "match" : {"role.role_id" : 8} }

        ]
      }
    }
}

Возвращает "хитов": [] не уверен, что здесь не так.

Я новичок в поиске elasti c, и я видел много документов где они упомянули вложенный тип для объектов. Это обязательно? мне нужно изменить индекс?

{
    "contacts": {
        "aliases": {},
        "mappings": {
            "properties": {
                 "roles": {
                    "properties": {
                        "role_id": {
                            "type": "long"
                        },
                        "role_name": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "status": {
                            "properties": {
                                "id": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "name": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

1 Ответ

0 голосов
/ 12 февраля 2020

Это должно сработать:

curl -XGET 'localhost:9200/contacts/_search?q=roles.role_id:8%20AND%20roles.status.id:5'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...