![](/img/trans.png)
[英]Multiple match_phrase conditions with another bool in a single ElasticSearch query?
[英]Elasticsearch query in array conditions on doc fields
我有这样的文件:
{
"_index": "listings",
"_type": "listing",
"_id": "234",
"_source": {
"category_id": "43608",
"categories": [
43608,
43596
]
}
}
我想查询以数组搜索category_id
在categories
。 类似的东西
{
"query": {
"bool": {
"must": [
{
"terms": {
"category_id": "doc.categories"
}
}
]
}
}
}
我该怎么办?
因为, category_id
是一个字符串类型,最好使用SHOULD
查询而不是MUST
查询,简单地说,遍历数组categories
并对数组中的每个元素进行单独的term
级别查询。
{
"query": {
"bool": {
"should": [
{
"term": {
"category_id": "doc.categories[0]"
}
},
{
"term": {
"category_id": "doc.categories[1]"
}
},
...
]
}
}
}
它将返回与任何categories
数组匹配的所有内容。
您必须使用用户脚本才能在另一个字段值中查找字段值。
{
"script": {
"script": {
"source": "doc.containsKey('categories') && doc['categories'].values.contains(doc['category_id'].value)",
"lang": "painless"
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.