如何通过多个字段在Elasticsearch中创建percolate索引

时间:2017-02-08 10:19:57

标签: elasticsearch elasticsearch-percolate

我有一个索引:产品

curl -XPUT "http://localhost:9200/products/product/1" -d'
{
    "title": "Iphone 6",
    "category_id": 4,
    "price": 7788,
    "owner_id": 21
}'

如何为3个字段创建渗透指数:title,category_id,price?

Percolate Query我在这里只找到了如何做1场。

1 个答案:

答案 0 :(得分: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
            }
        }
    }
}'