Arrays Elasticsearch查询相同数组
我有这样的文件: Doc1Arrays Elasticsearch查询相同数组,arrays,
elasticsearch,Arrays,
elasticsearch,我有这样的文件: Doc1 { "id": ..., ... "articles": [ { "id": "5cdd17c7e24f6e05d487b2c2#142936", ... }, { "id": "5cdd17c7e24f6e05d487b2c2#226536", ... } ... } Doc2 { "id
{
"id": ...,
...
"articles": [
{
"id": "5cdd17c7e24f6e05d487b2c2#142936",
...
},
{
"id": "5cdd17c7e24f6e05d487b2c2#226536",
...
}
...
}
Doc2
{
"id": ...,
...
"articles": [
{
"id": "5cdd17c7e24f6e05d487b2c2#142936",
...
},
{
"id": "5cdd17c7e24f6e05d487b2c2#226536",
...
},
{
"id": "5cdd17c7e24f6e05d487b2c2#142965",
...
}
...
}
Doc3
{
"id": ...,
...
"articles": [
{
"id": "5cdd17c7e24f6e05d487b2c2#142936",
...
}
...
}
我希望文档中有我需要的文章。例如,如果我的文章ID数组是['5cdd17c7e24f6e05d487b2c2#142936','5cdd17c7e24f6e05d487b2c2#226536'],我只想得到Doc1
现在我有一个问题:
GET my_index/_search
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "articles",
"query": {
"query_string": {
"default_field": "articles.id",
"query": "5cdd17c7e24f6e05d487b2c2#142936 AND 5cdd17c7e24f6e05d487b2c2#226536"
}
}
}
}
]
}
}
}
但是有了这个,我得到了Doc1和Doc2…假设
articles.id
是关键字的类型,我认为这应该适合您(不确定这是编写查询的最有效方式):
完美的非常感谢。
GET my_index/_search
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "articles",
"query": {
"term": {
"articles.id": "5cdd17c7e24f6e05d487b2c2#142936"
}
}
}
},
{
"nested": {
"path": "articles",
"query": {
"term": {
"articles.id": "5cdd17c7e24f6e05d487b2c2#226536"
}
}
}
}
],
"must_not": {
"nested": {
"path": "articles",
"query": {
"query_string": {
"default_field": "articles.id",
"query": "NOT 5cdd17c7e24f6e05d487b2c2#142936 AND NOT 5cdd17c7e24f6e05d487b2c2#226536"
}
}
}
}
}
}
}