我正在Elasticsearch 5.x中索引以下文档:
{
"id": 1
"description": "The quick brown fox"
}
{
"id": 2
"description": "The fox runs fast"
}
如果我在这些文档中搜索单词"fox"
,我将同时获得它们。
如何查找其description
字段以单词"fox"
结尾的文档?在上面的示例中,我正在寻找带有id=1
如果可能的话,我更喜欢使用Query String。
答案 0 :(得分:1)
好的正则表达式应该起作用。请注意,如果您需要花费大量时间寻找结尾,最好使用分析仪重新索引(https://discuss.elastic.co/t/elasticsearch-ends-with-word-in-phrases/60473)
"regexp":{
"id": {
"value": "*fox",
}
}
答案 1 :(得分:0)
确保索引映射包含用于描述的keyword field。例如:
PUT my_index
{
"mappings": {
"_doc": {
"properties": {
"description": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"id": {
"type": "long"
}
}
}
}
}
添加文档:
POST my_index/_doc
{
"id": 1,
"description": "The quick brown fox"
}
POST my_index/_doc
{
"id": 2,
"description": "The fox runs fast"
}
并使用如下查询字符串:
GET /my_index/_search
{
"query": {
"query_string" : {
"default_field" : "description.keyword",
"query" : "*fox"
}
}
}