は、それぞれが別々の文書である:ElasticSearchクエリ
{ 'PID':1、 'NM': 'トム'}、{ 'PID' {'pid':1、 'nm': 'harry'}、{'pid':2、 'nm': 'tom'}、{'pid':1、 'nm': 'dick' 2、 'nm': 'harry'}、{'pid':3、 'nm': 'dick'}、{'pid':3、 'nm': 'harry'}、{'pid':4、 「NM」:「ハリー」}
{
"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"
}
}
]
}
}
そして私は、上記の例では3と4ですessentialyを探すことはどのれ、持っていたPIDの「ハリー」を見つける必要があると「トム」を持っていません同じpidを持つ文書のうち、どれも値が 'それらの少なくとも1つは値 'harry'を持つnmを持っています。
どのようにクエリを実行しますか?
EDIT:使用Elasticsearchバージョン5
分析されるフィールドで用語クエリを使用するのは危険ですか?その場合、マッピングが提供されない場合、nmが分析される。 – Artholl
@Arthollもしあなたが 'not_analyzed'を使っているなら、上記のシナリオでそのフィールドを分析したくないのですか? – Kulasangar
@Kulasangarは、このクエリで一致/フィルタ条件を同じドキュメントに適用しないでしょうか?しかしここでは、例えば、3つのドキュメントが同じpid、すなわち1を持ちますが、3つの異なる値は 'nm'です。 – harbinger