问题描述
这是我在多字段映射中创建索引所使用的
curl -X PUT http://localhost:9200/mapping_log
{ "mappings":{ "properties":{"data1:{"type": "text","fields":{"keyword":{"type":"keyword"}}},{"data2":{"type": "text",{"data3":{"type": "text",} } }
这是我在弹性搜索中的数据,我想进行搜索,例如,当我搜索支持时,我应该获得值数据和服务器,当我搜索开发人员时,我应该获得 geo 和 graph,并且我想要建议者data3 就像假设如果我输入 g 那么我应该得到图形和地理选项,有人可以帮我解决这个问题吗..
{
"took": 14,"timed_out": false,"_shards": {
"total": 1,"successful": 1,"skipped": 0,"Failed": 0
},"hits": {
"total": {
"value": 4,"relation": "eq"
},"max_score": 1,"hits": [
{
"_index": "mapping_log","_type": "properties","_id": "1","_score": 1,"_source": {
"data1": "support","data2": "data","data3": "datapos"
}
},{
"_index": "mapping_log","_id": "2","data2": "server","data3": "serverpos"
}
},"_id": "3","_source": {
"data1": "developer","data2": "graph","data3": "graPHPos"
}
},"_id": "4","data2": "geo","data3": "geopos"
}
}
]
}
}
解决方法
您需要将 edge_ngram tokenizer 与 source filtering 一起使用
添加包含索引数据(与问题相同)、索引映射、搜索查询和搜索结果的工作示例
索引映射:
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "my_tokenizer"
}
},"tokenizer": {
"my_tokenizer": {
"type": "edge_ngram","min_gram": 1,"max_gram": 10,"token_chars": [
"letter","digit"
]
}
}
}
},"mappings": {
"properties": {
"data1": {
"type": "text"
},"data2": {
"type": "text"
},"data3": {
"type": "text","analyzer":"my_analyzer"
}
}
}
}
搜索查询:
当我寻求支持时,我应该得到值数据和服务器
{
"_source": [
"data2"
],"query": {
"multi_match": {
"query": "support","fields": [
"data1","data2"
]
}
}
}
搜索结果:
"hits": [
{
"_index": "67260491","_type": "_doc","_id": "1","_score": 1.4094054,"_source": {
"data2": "server"
}
},{
"_index": "67260491","_id": "4","_score": 0.44183272,"_source": {
"data2": "data"
}
}
]
搜索查询:
{
"_source": [
"data2"
],"query": {
"multi_match": {
"query": "developer","data2"
]
}
}
}
搜索结果:
"hits": [
{
"_index": "67260491","_id": "2","_score": 1.0296195,"_source": {
"data2": "graph"
}
},"_id": "3","_source": {
"data2": "geo"
}
}
]
搜索查询:
我想要 data3 的建议者,比如假设我输入 g 那么我应该得到 图形和地理选项
{
"_source": [
"data3"
],"query": {
"match": {
"data3": "g"
}
}
}
搜索结果:
"hits": [
{
"_index": "67260491","_score": 1.1123568,"_source": {
"data3": "geopos"
}
},"_score": 0.99270093,"_source": {
"data3": "graphpos"
}
}
]
更新 1:
您可以将索引映射更新为
PUT /<index-name>/_mapping
{
"properties": {
"data2": {
"type": "text","fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}