我有一个称为字段的字段,该字段位于嵌套字段“名称”中,该字段是 flex 搜索中的“关键字”。
名称字段包含2个值。
如果我查询“Rajagopalan”,我应该只获得项目#2。
如果我查询完整的Jagannathan Rajagopalan,我应该得到#1。
我该如何实现?
最佳答案
您需要使用用于精确搜索的term query。根据您的用例添加了一个工作示例。
索引映射
{
"mappings": {
"properties": {
"name": {
"type": "nested",
"properties": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}
索引样本文档{
"name" : {
"keyword" : "Jagannathan Rajagopalan"
}
}
还有另一个文件{
"name" : {
"keyword" : "Jagannathan"
}
}
并搜索查询{
"query": {
"nested": {
"path": "name",
"query": {
"bool": {
"must": [
{
"match": {
"name.keyword": "Jagannathan Rajagopalan"
}
}
]
}
}
}
}
}
搜索结果 "hits": [
{
"_index": "key",
"_type": "_doc",
"_id": "2",
"_score": 0.6931471,
"_source": {
"name": {
"keyword": "Jagannathan Rajagopalan"
}
}
}
]
关于elasticsearch - 在Elastic Search中匹配存储的值和查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64678624/