Предположим, что в моем Elasticsearch у меня есть поле 'ListNames', которое предоставляет список словарей.Один из ключей в каждом словаре - «Люди».Моя цель состоит в том, чтобы запрашивать / фильтровать из ES все соответствующие профили, где «ListNames.People» содержит «Адам» и содержит имя, которое НЕ «Адам».Без подробного списка всех возможных Имен (поскольку их много), как я мог бы достичь этого?Спасибо за любую помощь заранее.
В приведенном ниже коде показаны примеры постов, которые я пробовал
#Note: this returns profiles with ONLY Adam contained in the ListNames.
post_data = {
"size": 30,
"query": {
'match':{
'ListNames.People':'Adam'
}
}
}
#################
post_data = {
"size": 30,
"query": {
'bool': {
'should': [{
'match': {
'ListNames.People': 'Adam'
}
}],
'must_not':[
{'match':{'ListNames.People':'Adam'}}
]
}
}
}
###################
post_data = {
"size": 30,
"query": {
'bool': {
'must': [{
'match': {
'ListNames.People': 'Adam'
}
}],
'must_not':[
{'match':{'ListNames.People':'Adam'}}
]
}
}
}
В первом посте возвращаются результаты, содержащие только Адама, что нежелательно, а остальныедва возвращаются пустыми.