我正在对具有字符串类型数组的文档字段进行自动完成建议。我的文件如下所示;
{ "title": "Product1", "sales": "6", "rating": "0.0", "cost": "45.00", "tags": [ "blog", "magazine", "responsive", "two columns", "wordpress" ], "category": "wordpress", "description": "Product1 Description", "createDate": "2013-12-19" } { "title": "Product1", "sales": "6", "rating": "0.0", "cost": "45.00", "tags": [ "blog", "paypal", "responsive", "skrill", "wordland" ], "category": "wordpress", "description": "Product1 Description", "createDate": "2013-12-19" }
我正在 标签 字段上执行自动完成搜索。我的查询就像;
query: { query_string: { query: "word*", fields: ["tags"] } }, facets: { tags: { terms: { field: "tags" } } }
当用户键入“ word”时,我要显示“ wordland”和“ wordpress”。但是,我无法做到这一点。
您能帮上忙吗?
谢谢
您是否尝试过完成建议?解决问题的一种方法如下:
1)创建索引:
curl -XPUT "http://localhost:9200/test_index/"
2)使用完成建议者类型创建映射:
curl -XPUT "http://localhost:9200/test_index/product/_mapping" -d' { "product": { "properties": { "category": { "type": "string" }, "cost": { "type": "string" }, "createDate": { "type": "date", "format": "dateOptionalTime" }, "description": { "type": "string" }, "rating": { "type": "string" }, "sales": { "type": "string" }, "tags": { "type": "string" }, "title": { "type": "string" }, "suggest": { "type": "completion", "index_analyzer": "simple", "search_analyzer": "simple", "payloads": false } } } }'
3)添加文件:
curl -XPUT "http://localhost:9200/test_index/product/1" -d' { "title": "Product1", "sales": "6", "rating": "0.0", "cost": "45.00", "tags": [ "blog", "magazine", "responsive", "two columns", "wordpress" ], "suggest": { "input": [ "blog", "magazine", "responsive", "two columns", "wordpress" ] }, "category": "wordpress", "description": "Product1 Description", "createDate": "2013-12-19" }' curl -XPUT "http://localhost:9200/test_index/product/2" -d' { "title": "Product2", "sales": "6", "rating": "0.0", "cost": "45.00", "tags": [ "blog", "paypal", "responsive", "skrill", "wordland" ], "suggest": { "input": [ "blog", "paypal", "responsive", "skrill", "wordland" ] }, "category": "wordpress", "description": "Product1 Description", "createDate": "2013-12-19" }'
4)然后使用_suggest端点进行查询:
curl -XPOST "http://localhost:9200/test_index/_suggest" -d' { "product_suggest":{ "text":"word", "completion": { "field" : "suggest" } } }'
您将获得预期的结果:
{ "_shards": { "total": 2, "successful": 2, "failed": 0 }, "product_suggest": [ { "text": "word", "offset": 0, "length": 4, "options": [ { "text": "wordland", "score": 1 }, { "text": "wordpress", "score": 1 } ] } ] }
当然,可以稍微改进此解决方案,特别是通过修剪一些重复的数据,但这应该为您指明正确的方向。