Я относительно новичок вasticsearch, так что извините, если это кажется глупым вопросом ... Я пытаюсь запросить мой эластик, чтобы найти все документы, содержащие слово (тег) внутри вложенного json, который содержит массивобъекты ..
пример: {... "notes": {... "tags": {[{"n": 100, "t": "data science"}, {"n": 101, "t": "web development"}, {"n": 102, "t": "python"} ....]}} И я хочу извлечь все документы (jsons), которые находятся внутри ихтеги один тег data_science и один тег python.
Я использую для этого обычную библиотекуasticsearch (на python), и я пытался использовать aggs и вложенные документы, но не мог понять, какобъединить их и получить запрос, который мне нужен.https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-nested-query.html https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html
from elasticsearch import Elasticsearch
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
body = '''
{
"query": {
"nested" : {
"path" : "my_index",
"query" : {
"bool" : {
"must" : [
{ "range" : {"my_index.notes.tags.t" : {"python": 2}} },
{ "range" : {"my_index.notes.tags.t" : {"data science": 2}} }
]
}
},
"score_mode" : "avg"
}
}
}
'''
es.search(index="my_index", body=body)