webportal
@webportal

Как в ElasticSearch искать по полю типа массив?

Есть индекс с таким маппингом
{
   "words": {
      "mappings": {
         "word": {
            "properties": {
               "_id": {
                  "type": "string"
               },
               "defs": {
                  "properties": {
                     "text": {
                        "type": "string",
                        "analyzer": "terms_defs"
                     }
                  }
               },
               "termin": {
                  "type": "string"
               }
            }
         }
      }
   }
}

В нём документы типа

{
            "_index": "words",
            "_type": "word",
            "_id": "5697a367a3cb0a39705aa739",
            "_score": 1,
            "_source": {
               "termin": "СТЕРЕОФОТОГРАММЕТРИЯ",
               "defs": [
                  {
                     "text": "наука, изучающий методы измерения объемных форм по паре фотоснимков"
                  },
                  {
                     "text": "раздел фотограмметрии, изучающий методы измерения объемных форм по стереопарам фотоснимков"
                  },
                  {
                     "text": "наука, изучающая методы измерения объемных форм (например, рельефа местности) по стереопаре фотоснимков, основанные на использовании стереоскопического эффекта и измерении объемной модели местности специальными приборами"
                  }
               ],
               "_id": "5697a367a3cb0a39705aa739"
            }
         }


Нужно что бы например этот документ находило по запросу "раздел фотограмметрии" и не находило по запросу "наука фотограмметрии"

Например такой запрос находит сейчас этот документ:
{
    "query":{
        "bool": {
            "should": [{
                "function_score": {
                    "query": {
                        "match": {
                            "defs.text": {
                                "query": "наука фотограмметрии",
                                "fuzziness": "AUTO",
                                "operator":  "and"
                            }
                        }
                    }
                }
            }]
        }
    }
}
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы