Фильтры с динамическими полями в упругом поиске - PullRequest
0 голосов
/ 25 ноября 2018

Я переключаю очень старую версию ElasticSearch на версию 6.5.

...  
  "text_mined_entities": {
            "nlp": {
                "abbreviations": [],
                "chunks": [],
                "recurring_chunks": [],
                "tagged_entities_grouped": {
                    "NEURO|SCICRUNCH": [
                        {
                            "category": "NEURO",
                            "end": 41,
                            "label": "Infant",
                            "match": "infant",
                            "original_value": "Infant",
                            "reference": "BIRNLEX695",
                            "reference_db": "SCICRUNCH",
                            "sentence": 0,
                            "start": 35
                        },
...

Я хочу отфильтровать по ссылочным полям text_mined_entities.nlp.tagged_entities_grouped. *. (Которые хранятся как «ключевое слово»).), но не повезло.Что-то вроде:

GET _search
{
  "query": {
    "bool": {
      "filter": { "term": {
        "text_mined_entities.nlp.tagged_entities_grouped.*.reference": "BIRNLEX695"

      }}

    }
  }
}

Есть предложения?Благодарю.

1 Ответ

0 голосов
/ 25 ноября 2018

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

Предположим, text_mined_entities и nlp имеют тип nested

{
  "query": {
    "nested": {
      "path": "text_mined_entities.nlp",
      "query": {
        "query_string": {
          "query": "BIRNLEX695",
          "fields": [
            "text_mined_entities.nlp.tagged_entities_grouped.*.reference"
          ]
        }
      }
    }
  }
}

Обновление (если text_mined_entities & nlpobject типа, а не nested):

{
  "query": {
    "query_string": {
      "query": "BIRNLEX695",
      "fields": [
        "text_mined_entities.nlp.tagged_entities_grouped.*.reference"
      ]
    }
  }
}
...