如何在 Elasticsearch 中按多个字段创建渗透索引
How to create percolate index in Elasticsearch by multiple fields
我有一个索引:产品
curl -XPUT "http://localhost:9200/products/product/1" -d'
{
"title": "Iphone 6",
"category_id": 4,
"price": 7788,
"owner_id": 21
}'
如何为 3 个字段创建过滤索引:标题、category_id、价格?
Percolate Query 在这里我只找到了如何处理 1 个字段。
创建具有两个映射的索引
curl -XPUT 'localhost:9200/percolate-index?pretty' -H 'Content-Type: application/json' -d'
{
"mappings": {
"doctype": {
"properties": {
"title": {
"type": "text"
},
"category_id": {
"type": "long"
},
"price": {
"type": "long"
}
}
},
"queries": {
"properties": {
"query": {
"type": "percolator"
}
}
}
}
}'
在过滤器中注册查询
curl -XPUT 'localhost:9200/percolate-index/queries/1?refresh&pretty' -H 'Content-Type: application/json' -d'
{
"query": {
"bool": {
"must": {
"multi_match": {
"query": "iphone",
"fields": ["title"]
}
},
"filter": [
{
"terms": {
"category_id": [4]
}
}
]
}
}
}'
将文档与已注册的过滤器查询匹配
curl -XGET 'localhost:9200/percolate-index/_search?pretty' -H 'Content-Type: application/json' -d'
{
"query" : {
"percolate" : {
"field" : "query",
"document_type" : "doctype",
"document" : {
"title" : "iphone 6",
"category_id" : 4
}
}
}
}'
我有一个索引:产品
curl -XPUT "http://localhost:9200/products/product/1" -d'
{
"title": "Iphone 6",
"category_id": 4,
"price": 7788,
"owner_id": 21
}'
如何为 3 个字段创建过滤索引:标题、category_id、价格?
Percolate Query 在这里我只找到了如何处理 1 个字段。
创建具有两个映射的索引
curl -XPUT 'localhost:9200/percolate-index?pretty' -H 'Content-Type: application/json' -d'
{
"mappings": {
"doctype": {
"properties": {
"title": {
"type": "text"
},
"category_id": {
"type": "long"
},
"price": {
"type": "long"
}
}
},
"queries": {
"properties": {
"query": {
"type": "percolator"
}
}
}
}
}'
在过滤器中注册查询
curl -XPUT 'localhost:9200/percolate-index/queries/1?refresh&pretty' -H 'Content-Type: application/json' -d'
{
"query": {
"bool": {
"must": {
"multi_match": {
"query": "iphone",
"fields": ["title"]
}
},
"filter": [
{
"terms": {
"category_id": [4]
}
}
]
}
}
}'
将文档与已注册的过滤器查询匹配
curl -XGET 'localhost:9200/percolate-index/_search?pretty' -H 'Content-Type: application/json' -d'
{
"query" : {
"percolate" : {
"field" : "query",
"document_type" : "doctype",
"document" : {
"title" : "iphone 6",
"category_id" : 4
}
}
}
}'