Фильтрация Elasticsearch во вложенных запросах завершается неудачно - PullRequest
2 голосов
/ 13 мая 2019

У меня есть пользовательское определение в моем отображении эластичного поиска, где я использовал вложенный объект для поиска. Я хочу добавить фильтр для поиска только определенных идентификаторов. Когда я пытаюсь использовать фильтр, он не работает. Это мой поисковый запрос:

{  
      "_source":"false",
      "query":{  
        "nested":{  
             "path":"custom",
             "query":{  
                "multi_match":{  
                        "fields":["custom.text"],
                        "query" : "foo bar whatever",
                        "fuzziness":"AUTO"

                }
             },
              "filter": {
                "term" : {"Id":"100", "200"}    
             },

             "inner_hits":{
                "highlight":{
                    "fields":{
                        "custom.start_time":{}
                    }
                }
             }
          }
       }
    }

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

{
    "mappings":{
            "properties":{
                "Id":{
                    "type":"integer"
                },
                "custom":{
                    "type":"nested",
                    "properties":{
                        "text":{
                            "type":"text"
                        },
                        "start_time":{
                            "type":"text"
                        },
                        "end_time":{
                            "type":"text"
                        }

                    }

                }
        }
    }
}

1 Ответ

2 голосов
/ 13 мая 2019

Хорошо, вы смешали вложенный с не вложенным.Вот запрос, который будет работать для вас:

{
  "_source": "false",
  "query": {
    "bool": {
      "filter": [
        {
          "terms": {
            "Id": [
              "100",
              "200"
            ]
          }
        },
        {
          "nested": {
            "path": "custom",
            "query": {
              "multi_match": {
                "fields": [
                  "custom.text"
                ],
                "query": "foo bar whatever",
                "fuzziness": "AUTO"
              }
            },
            "inner_hits": {
              "highlight": {
                "fields": {
                  "custom.start_time": {}
                }
              }
            }
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...