我有以下两个有弹性的文件:
文档1
{"name":"doc1","tags":["Hello World"]}
文档2
{"name":"doc2", "tags":["World"]}
我要搜索一个包含“世界”作为单个单词的文档,但是此查询返回两个文档:
{"query":{"bool":{"must":[{"match":{"tags":{"query":"World"}}}]}}}
我该如何实现?
答案 0 :(得分:0)
如果映射的keyword
字段中有tags
,则可以使用它,例如
GET your_index/doc
{
"query": {
"bool": {
"must": [
{
"match": {
"tags.keyword": { // use `keyword` field here
"query": "World"
}
}
}
]
}
}
}
仅当您的映射如下时
{
"your_index": {
"mappings": {
"doc": {
"properties": {
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"tags": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword", // this mapping is required
"ignore_above": 256
}
}
}
}
}
}
}
}
答案 1 :(得分:0)
您需要使用keyword Analyzer
curl -X PUT "http://localhost:9200/my_index" -H 'Content-Type: application/json' -d'
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "keyword"
}
}
}
},
"mappings": {
"_doc": {
"properties": {
"filedname": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}
}'