У меня есть данные этого формата в elasticsearch, каждый из которых находится в отдельном документе:ElasticSearch запроса с условиями на нескольких документах
{ «PID»: 1, «нм»: «Том»}, { «PID» : 1, 'nm': 'dick' '}, {' pid ': 1,' nm ':' harry '}, {' pid ': 2,' nm ':' tom '}, {' pid ': 2, 'nm': 'harry'}, {'pid': 3, 'nm': 'dick'}, {'pid': 3, 'nm': 'harry'}, {'pid': 4, «нм»: «гарри»}
{
"took": 137,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 8,
"max_score": null,
"hits": [
{
"_index": "query_test",
"_type": "user",
"_id": "AVj9KS86AaDUbQTYUmwY",
"_score": null,
"_source": {
"pid": 1,
"nm": "Harry"
}
},
{
"_index": "query_test",
"_type": "user",
"_id": "AVj9KJ9BAaDUbQTYUmwW",
"_score": null,
"_source": {
"pid": 1,
"nm": "Tom"
}
},
{
"_index": "query_test",
"_type": "user",
"_id": "AVj9KRlbAaDUbQTYUmwX",
"_score": null,
"_source": {
"pid": 1,
"nm": "Dick"
}
},
{
"_index": "query_test",
"_type": "user",
"_id": "AVj9KYnKAaDUbQTYUmwa",
"_score": null,
"_source": {
"pid": 2,
"nm": "Harry"
}
},
{
"_index": "query_test",
"_type": "user",
"_id": "AVj9KXL5AaDUbQTYUmwZ",
"_score": null,
"_source": {
"pid": 2,
"nm": "Tom"
}
},
{
"_index": "query_test",
"_type": "user",
"_id": "AVj9KbcpAaDUbQTYUmwb",
"_score": null,
"_source": {
"pid": 3,
"nm": "Dick"
}
},
{
"_index": "query_test",
"_type": "user",
"_id": "AVj9Kdy5AaDUbQTYUmwc",
"_score": null,
"_source": {
"pid": 3,
"nm": "Harry"
}
},
{
"_index": "query_test",
"_type": "user",
"_id": "AVj9KetLAaDUbQTYUmwd",
"_score": null,
"_source": {
"pid": 4,
"nm": "Harry"
}
}
]
}
}
и мне нужно найти PID, который есть «гарри» и не имеют «Томь», который в приведенном выше примере 3 и 4. Какие essentialy средства поиска документы, имеющие одинаковые pids, где ни один из них не имеет nm со значением ' tom ', но по крайней мере один из них имеет nm со значением «harry».
Как это сделать?
EDIT: Использование Elasticsearch версия 5
Не опасно ли использовать терминологический запрос в анализируемом поле? нм будет проанализирован в этом случае, если отображение отсутствует. – Artholl
@Artholl Что делать, если вы используете 'not_analyzed', если вы не хотите, чтобы это поле было проанализировано для вышеуказанного сценария? – Kulasangar
@ Kulasangar не будет ли этот запрос применять условия соответствия/фильтра в том же документе? Но здесь, например, три документа имеют одинаковый pid, т. Е. 1, но три разных значения для «nm». – harbinger