我想写一个查询来分析一个或多个字段?
即。当前的分析器需要文本才能运行,而不是传递我希望传递字段值的文本。
如果我有这样的文件
{
"desc": "A document description",
"name": "This name is not original",
"amount": 3000
}
我想返回类似下面的内容
{
"desc": ["document", "description"],
"name": ["name", "original"],
"amount": 3000
}
答案 0 :(得分:2)
您可以使用术语向量或多项向量来实现您的目标:
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-multi-termvectors.html
您必须指定所需字段的 ID 以及字段,并且它将为您拥有的每个文档返回分析的标记数组以及您提供的某些其他信息很容易禁用。
GET /exampleindex/_doc/_mtermvectors
{
"ids": [
"1","2"
],
"parameters": {
"fields": [
"*"
]
}
}
将返回以下内容:
"docs": [
{
"_index": "exampleindex",
"_type": "_doc",
"_id": "1",
"_version": 2,
"found": true,
"took": 0,
"term_vectors": {
"desc": {
"field_statistics": {
"sum_doc_freq": 5,
"doc_count": 2,
"sum_ttf": 5
},
"terms": {
"amazing": {
"term_freq": 1,
"tokens": [
{
"position": 1,
"start_offset": 3,
"end_offset": 10
}
]
},
"an": {
"term_freq": 1,
"tokens": [
{
"position": 0,
"start_offset": 0,
"end_offset": 2
}
]
}
答案 1 :(得分:0)
_analyze
api。如果您希望在某些条件下以不同的方式检索文本,则场景会再次更改。根据我的说法,最后一种方案的更快更简单的解决方案是复制你的字段,一次使用分析仪,第二种不用